列表推导式,是指循环创建列表
列表推导式就相当于for循环创建列表的简化版
语法:[表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ]
list1 = [a for a in range(5)]
print(list1) # [0, 1, 2, 3, 4]
# in后面也可以跟其它迭代对象
list2 = [2*a for a in "python"]
print(list2) # ['pp', 'yy', 'tt', 'hh', 'oo', 'nn']
# 带if语句的列表推导式
list3 = [a for a in range(5) if a%2 != 0]
print(list3) # [1, 3]
# 多个for循环
list4 = [(a,b) for a in range(4) for b in "python"]
print(list4) # [(0, 'H'), (0, 'M'), (1, 'H'), (1, 'M')]
字典推导式
# 根据键构造值
lsit1 = ["python","java","go"]
dict1 = {key:len(key) for key in list1}
print(dict1) # {'python': 6, 'java': 4, 'go': 2}
# 遍历一个有键值关系的可迭代对象
list2 = [("天上","飞机"),("地上","汽车"),("水里","船")]
dict2 = {key:value for key,value in list2}
print(dict2) # {'天上': '飞机', '地上': '汽车', '水里': '船'}
集合推导式
集合推导式跟列表推导式非常相似,唯一区别在于用{ }代替[ ]
str1 = ["python","go","java"]
set1 = {len(s) for s in str1}
print(set1) # {2, 4, 6}