一、列表推导式
for…
不使用推导式:
t = []
for i in range(10):
t.append(i)
print(t) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
推导式:
print([i for i in range(10)]) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for… if…
不使用推导式:
t = []
for i in range(10):
if i % 2 == 0:
t.append(i)
print(t) # [0, 2, 4, 6, 8]
推导式:
print([i for i in range(10) if i % 2 == 0])
# [0, 2, 4, 6, 8]
for… if…else…
不使用推导式:
t = []
for i in range(10):
if i % 2 == 0:
t.append(i)
else:
t.append(8)
print(t) # [0, 8, 2, 8, 4, 8, 6, 8, 8, 8]
推导式:
print([i if i % 2 == 0 else 8 for i in range(10)])
# [0, 8, 2, 8, 4, 8, 6, 8, 8, 8]
练习1:将字符串中所有数字提出,形成新的字符串
str1 = "abcA234BDF5687"
print(''.join([i for i in str1 if i.isdigit()])) # 2345687
二、元组推导式
e = (i for i in range(10))
print(e) # <generator object <genexpr> at 0x03BB50F0>
print(tuple(e)) # (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
三、集合推导式
将列表元素添加到空集合
s = {i for i in [1, 2, 3, 45, 3, 2, 1]}
print(s) # {1, 2, 3, 45}
四、字典推导式
创建字典
d = {i:i*i for i in range(10)}
print(d) # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}