Python式と生成式

14317 ワード

Python式と生成式
前言
この章のすべての知識点は、コードの可読性を失わずにコードを最大限に簡素化する一連の操作です.その中には、いくつかの性能問題(わずか)が考慮されなくてもよい.
 
さんげんしき
 
3 D表現には、次の3つの重要な要素があります.
    1.条件は第1要素
    2.条件が成立して返される値は第2の要素です
    3.条件が成立しない場合に返される値は第3の要素です
 
def func(x,y):
    if x > y:
        return "    "
    else:
        return "     "
​
res1 = func(1,2)
print(res1)
​
​
# ====       ====
​
x = 1
y = 2#               ,       ,               
res2 = "    " if x > y else "     "
print(res2)
​
# ====      ====
"""
     
     
"""

 
 
リスト生成
適用シーン:
#   :     l   male      
​
l = ["Yunya-male", "Jack-male", "Cuihua-Female", "Mary-Female", "Laura-Female", "Tom-male"]
new_l = []
for name in l:
    if name.endswith("-male"):
        new_l.append(name)
print(new_l)
​
# ====       ====
#            。       ,   if  。  if                   
new_l2 = [name for name in l if name.endswith("-male")]
# new_l2 = [name for name in l if name.endswith("-male") else "x"] #      else,                 
print(new_l2)
​
# ====      ====
"""
['Yunya-male', 'Jack-male', 'Tom-male']
['Yunya-male', 'Jack-male', 'Tom-male']
"""

 
 
リスト生成式をすばやく把握する方法:
#        ,                。
​
l = [str(i) for i in range(10) if i > 5]
print(l)
​
#
# 1:          for i in range(10) if i > 5。       
# 2:       str(i) ,        。
# ====      ====
"""
['6', '7', '8', '9']
"""

 
 
注:リスト生成式はrange()の反復変数とは何の関係もありません.
#   :      ,    8   15   
​
l = [15 for i in range(8)]  #         i               。

 
 
ディクショナリ生成式
# 1.       value 
​
dic1 = {i:"value" for i in range(10) if i > 5}
print(dic1) 
​
# 2.             。         
​
items = [("name","Yunya"),("age",18),("gender","male")]
dic2 = {k:v for k,v in items}
print(dic2)
​
# ====      ====
"""
{6: 'value', 7: 'value', 8: 'value', 9: 'value'}
{'name': 'Yunya', 'age': 18, 'gender': 'male'}
"""

 
 
しゅうごうせいせいしき
# 1.        :value        
​
li = ["a","b","a","b","c","d","d","e"]
set1 = {i for i in li}
print(set1)
​
# ====      ====
"""
{'a', 'b', 'c', 'e', 'd'}
"""

 
 
ジェネレータ式
#                   。       ,   [],   ()
​
g = (i for i in range(10) if i > 5)
print(g)
print(g.__next__())
print(g.__next__())
print(g.__next__())
​
# ====      ====
"""
 at 0x0000023A84B9E350>
6
7
8
"""

 
 
適用シーン:
#           
# ===   1 ===
​
with open(file="       .text",mode="rt",encoding="utf-8") as f:
    res1 = 0
    for line in f:
        res1 += len(line)
    print(res1)
​
# ===   2 ===
# sum()     ,         。                
​
with open(file="       .text",mode="rt",encoding="utf-8") as f:
    res2 = sum(len(line) for line in f) #                       ,       。
    print(res2)
​
# ====      ====
"""
959
959
"""

 
 
拡張:メタグループ生成式がない理由
メタグループ自体は可変タイプであり、コントラストリスト生成式であり、その動作原理は、反復可能なオブジェクトを反復し、append()を使用して要素を追加することである.メタグループは可変タイプであるため、それ自体のコンテナ内の要素の個数を変更しようとすることはできません.