列表推導式與生成器表示式

2022-08-27 15:03:12 字數 2154 閱讀 5830

# 用一行**構建乙個比較複雜有規律的列表。

# l1 =

# for i in range(1,11):

# print(l1)

# 列表推導式

# l1 = [i for i in range(1,11)]

# print(l1)

# 列表推導式分兩類

# 迴圈模式:

# 迴圈模式:[變數(加工後的變數) for 變數 in iterable]

# 將10以內所有整數的平方寫入列表。

# ret = [i**2 for i in range(1,11)]

# print(ret)

# # 100以內所有的偶數寫入列表.

# print([i for i in range(2, 101, 2)])

# 從python1期到python100期寫入列表lst

# print([f'python期' for i in range(1,101)])

# 篩選模式

# 篩選模式:[變數(加工後的變數) for 變數 in iterable if 條件]

# 30以內能被3整除的數

# l1 = [i for i in range(1,31) if i%3 == 0]

# print(l1)

# 過濾掉長度小於3的字串列表,並將剩下的轉換成大寫字母

# l1 = ['barry', 'ab', 'alex', 'wusir', 'xo']

# print([i.upper() for i in l1 if len(i) >= 3 ])

# 含有兩個'e'的所有的人名全部大寫留下來

names = [['tom', 'billy', 'jefferson', 'andrew', 'wesley', 'steven', 'joe'],

['alice', 'jill', 'ana', 'wendy', 'jennifer', 'sherry', 'eva']]

l1 =

for i in names:

for name in i:

if name.count('e') == 2:

print(l1)

print([name.upper() for i in names for name in i if name.count('e') == 2])

# 生成器表示式:

# 與列表推導式的寫法幾乎一模一樣,也有篩選模式,迴圈模式,多層迴圈構建。寫法上只有乙個不同:

# 換成 ().

# print([i for i in range(1,11)])

# print((i for i in range(1,11)))

# obj = (i for i in range(1,11))

# print(next(obj))

# print(next(obj))

# print(next(obj))

# print(next(obj))

# print(next(obj))

# for i in obj:

# print(i)

# 總結:

# 列表推導式:

# 缺點:

# 1,有毒。列表推導式只能構建比較複雜並且有規律的列表。 不要太著迷。

# 2,超過三層迴圈才能構建成功的,就不建議用列表推導式。

# 3,查詢錯誤(debug模式)不行。

# 優點:

# 一行構建,簡單。

# 裝逼。

# 構建乙個列表: [2,3,4,5,6,7,8,9,10,'j','q','k','a']

# l1 = [i for i in range(2,11)] + list('jqka')

# print(l1)

# 列表推導式與生成器表示式區別。

# 寫法上: ()

# iterable iterator

# 字典推導式(了解)

# # lst1 = ['jay', 'jj', 'meet']

# # lst2 = ['周杰倫','林俊傑','元寶']

# # dic =

# # print(dic)

# 集合推導式(了解)

# print()

列表推導式,生成器表示式

生成器表示式,列表推導式 其他推導式 變數 加工後的變數 for 變數 in iterable 迴圈模式 變數 加工後的變數 for 變數 in iterable if 條件 篩選模式 優點 1,節省 一行搞定.2,看著高大上.缺點 不好排錯.整體 凡是用列表推導式構造的列表物件,用其他方式都可構建...

列表推導式 生成器表示式

列表推導式 基本形式 表示式 for 引數 in 可迭代物件 或者 表示式 for 引數 in 可迭代物件 if 條件 例項 1 l 2for i in range 100 egg s i 4printi5 6 不帶if條件 7 l agg s i for i in range 100 89 帶if...

推導式 與 生成器表示式

推導式 先講列表推導式,其它推導式皆與之類似.列表推導式由乙個包含表示式的中括號組成,表示式後面跟隨乙個for子句,之後可以有0個或多個for子句或if子句.由於是用中括號括起來的,所以得到的是乙個列表,它為從乙個序列中建立列表提供了乙個簡單的方法.其實,表示式就是將儲存在列表中的每一項的原型,表示...