1. 程式人生 > >Python(15)--推導

Python(15)--推導

列表推導:

  類似for迴圈,是從其他列表建立列表的方式

s = [i for i in range(6)]
print(s)    # [0, 1, 2, 3, 4, 5]

  可以加判斷條件

s = [i for i in range(6) if i%2 == 0]
print(s)    # [0, 2, 4]

  可以有更多的for

s = [(x, y) for x in range(3) for y in range(3)]
print(s)    # [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

  


 

  將首字元相同的男孩與女孩名字配對

girls =['alice','bernice','clarice']
boys =['chris', 'arnold', 'bob']
li = [b + "+" + g for b in boys for g in girls if b[0] == g[0]]
print(li)

  上面的效率不高,因為需要檢查每一種配對,優化後:

girls =['alice','bernice','clarice']
boys =['chris', 'arnold', 'bob']
d = {}
for girl in girls:
    d.setdefault(girl[0], []).append(girl)
print([b + "+" + g for b in boys for g in d[b[0]]])

# 建立字典d,每項的鍵都是一個字母,值為這個字母開頭的女孩名組成的列表,列表推導遍歷男孩,找到名字首字母和當前男孩相同的女孩

 


字典推導:

  字典推導中,for前面有兩個用冒號分隔的表示式,分別表示鍵和值;列表只有一個

d = {i: "{} +1 is {}".format(i, i+1) for i in range(6)}
print(d)
# {0: '0 +1 is 1', 1: '1 +1 is 2', 2: '2 +1 is 3', 3: '3 +1 is 4', 4: '4 +1 is 5', 5: '5 +1 is 6'}