列表推導式同filter和map的比較

2022-04-10 14:21:45 字數 837 閱讀 7593

# 列表推導式同filter和map的比較

symbols = "symbols"

beyond_ascii = [ord(s) for s in symbols if ord(s) > 100]

beyond_ascii_2 = list(filter(lambda c: c > 100, map(ord, symbols)))

print(beyond_ascii)

print(beyond_ascii_2)

# 列表推導式構建笛卡爾積

colors = ["黑色", "白色"]

sizes = ["s", 'm', "l"]

ths = [(color, size) for color in colors for size in sizes]

print(ths)

# 生成器表示式

# 雖然也可以用列表推導式來初始化元組 陣列或其他序列型別,但是生成器表示式是更好的選擇.這是因為生成器表示式遵循了迭代器協議,

# 可以逐個的產出元素,而不是先建立乙個完整的列表,然後再把這個列表傳遞到某個建構函式裡.

# 用生成器表示式初始化元組和陣列

print(tuple(ord(s) for s in symbols)) # 注意,如果生成器表示式是乙個函式呼叫過程中的唯一引數,那麼不需要額外的再用括號把它圍起來.

import array

print(array.array("i", (ord(s) for s in symbols))) # array的構造方法需要兩個引數,因此括號是必須的.array構造方法的第乙個引數指定了陣列中數字的儲存方式.

列表推導式

1.先判斷再賦值 a 5 b 6 c a b print c false 列表組合 list1 1,2,3 list2 4,5,6 list3 list1 list2 print list3 一行 方括號中是對字串的切片 後邊有個or 為從左到右,取第乙個為真的值,如果or左側為非空字串,就是用or...

列表推導式

0 9的平方,輸出為列表 list1 x 2 for x in range 10 range 10 是0 9 print list1 結果為 0,1,4,9,16,25,36,49,64,81 使用for迴圈完成 0 9的平方,輸出為列表 list1 for i in range 10 print ...

列表推導式

expr for val in collection if condition 滿足condition條件就把val加入到列表中 這個列表推導式等價於下面這個多行 生成的a陣列就和這個列表推導式生成的東西一模一樣 a for val in collection if condition 備註 利用列...