1. 列表生成式
列表 = [被追加的数据 循环语句 循环或判断语句]
生成式内不限制循环语句和判断语句的条数,但如果过长的话,为避免影响阅读效果,建议使用展开的方式
# 原表达式
lst1 = []
for i in range(10, 20):
lst1.append(i * 10)
print(lst1)
# 使用列表生成式
lst1 = [ i * 10 for i in range(10, 20)]
print(lst1)
# 原表达式(判断)
lst2 = []
for i in range(10, 20):
if i % 2 == 0:
lst2.append(i * 10)
print(lst2)
# 使用列表生成式
lst2 = [i * 10 for i in range(10, 20) if i % 2 ==0]
print(lst2)
# 原表达式(嵌套)
lst3 = []
for i in range(1, 5):
for j in range(1, 5):
lst3.append(i * j)
print(lst3)
# 使用列表生成式
lst3 = [i * j for i in range(1, 5) for j in range(1, 5)]
print(lst3)
2. 字典生成式
字典 = {键数据:值数据 循环语句 循环或判断语句}
# 原表达式
dict1 = {}
lst = ['张三', '李四', '王五']
for i in range(0, len(lst)):
dict1[i+1] = lst[i]
print(dict1)
# 使用字典生成式
lst = ['张三', '李四', '王五']
dict1 = {i+1:lst[i] for i in range(0, len(lst))}
print(dict1)
# 原表达式
dict1 = {}
lst = ['春天', '夏天', '秋天', '冬天']
for i in range(0, len(lst)):
dict1['season' + str(i+1)] = lst[i]
print(dict1)
# 使用字典生成式
lst = ['春天', '夏天', '秋天', '冬天']
dict1 = {'season' + str(i+1):lst[i] for i in range(0, len(lst))}
print(dict1)
3. 集合生成式
集合 = {被追加的数据 循环语句 循环或判断语句}
# 原表达式
set1 = set()
for i in range(1, 4):
for j in range(1, 4):
if i == j:
set1.add(i * j)
print(set1)
# 使用集合生成式
set1 = {i * j for i in range(1, 4) for j in range(1, 4) if i == j}
print(set1)