推导式
【1】列表推导式
直接从序列中构建列表
list = []
for i in range(5):
list.append(i)
print(list) # [0, 1, 2, 3, 4]
使用列表推导式
list = [i for i in range(5)]
print(list) # [0, 1, 2, 3, 4]
新生成列表的每个元素都可以是任意的表达式或对象
a = [1, 2, 3]
print([i * i for i in a]) # [1,4,9]
print([[i, i + 2] for i in a]) # [[1,3],[2,4],[3,5]]
加入嵌套循环
test1 = [1, 2, 3]
test2 = [4, 5, 6]
# 列表生成式 : 遍历两个列表并取出每一个列表的元素 做乘法运算
list1 = [x * y for x in test1 for y in test2]
print(list1) # [4,5,6,8,10,12,12,15,18]
# 列表生成式 : 遍历两个列表并取出每一个列表的元素 做新列表的生成
list2 = [[x, x + y] for x in test1 for y in test2]
print(list2) #[[1, 5], [1, 6], [1, 7], [2, 6], [2, 7], [2, 8], [3, 7], [3, 8], [3, 9]]
加入判断条件
test = [1, 2, 3, 4, 5, 6]
list = [x for x in test if x % 2 == 0]
print(list) # [2, 4, 6]
【2】字典推导式
- 语法格式如下:
{键:值 for 迭代变量 in 可迭代对象 [if 条件表达式]}
【3】元祖推导式
- 但是元组推导式运行结果却不同,具体如下。
my_tuple = (i for i in range(10))
print(my_tuple)
#<generator object <genexpr> at 0x000001992750F580>
【4】集合推导式
集合是无序且不重复的,所以会自动去掉重复的元素,并且每次运行显示的顺序不一样
my_set = {value for value in 'apple'}
print(my_set)
#{'p', 'a', 'l', 'e'}