day14-推導式和生成器表達式

1.推導式規則

[每一個元素或者是和元素相關的操作 for 元素 in 可迭代數據類型] ———-遍歷之後挨個處理
[滿足條件的元素相關的操作 for 元素 in 可迭代數據類型 if 元素相關的條件] ———-篩選功能

2.列表推導式

# 原始的
num_list = []
for i in range(10):
    num_list.append(i)
print(num_list)

# 現在的---列表推導式
num_list = [i for i in range(10)]
print(num_list)

簡而言之,print([i for i in range(10)])就是一個列表推導式。

《day14-推導式和生成器表達式》
《day14-推導式和生成器表達式》

num_list = [i for i in range(30) if i % 3 == 0]
print(num_list)

例1:30以內能被3整除的數
《day14-推導式和生成器表達式》
《day14-推導式和生成器表達式》

1 num_list = [i*i for i in range(30) if i % 3 ==0]
2 print(num_list)

例2:30以內能被3整除的數的平方
《day14-推導式和生成器表達式》
《day14-推導式和生成器表達式》

names_list = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
          ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
rcp = [name for lst in names_list for name in lst if name.count('e') == 2]
print(rcp)

例3:找到嵌套列表中名字含有兩個‘e’的所有名字

3.字典推導式

《day14-推導式和生成器表達式》
《day14-推導式和生成器表達式》

1 start_dev = {'a':1,'b':2}
2 end_dev = {start_dev[k]:k for k in start_dev}
3 print(end_dev)

例1:讓字典的鍵和值對換
《day14-推導式和生成器表達式》
《day14-推導式和生成器表達式》

1 dic = {'a':5,'B':10,'c':4,'A':5}
2 rcp = {k.lower():dic.get(k.lower(),0)+dic.get(k.upper(),0) for k in dic}
3 print(rcp)
4 # result:{'a': 10, 'b': 10, 'c': 4}

例2:合併大小寫對應的value值,統一成小寫

 4.集合表達式

自帶去重功能

《day14-推導式和生成器表達式》
《day14-推導式和生成器表達式》

1 squa = {x**2 for x in [1,-1,2]}
2 print(squa)

View Code

5.生成器表達式

# 生成器表達式
g = (i for i in range(10))
for i in g:
    print(i)
生成器表達式與列表推導式有什麼不同?
1.括號不一樣
2.返回的值不一樣,生成器表達式幾乎不佔用內存。
点赞

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *