推导式

【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'}
posted @ 2023-12-12 19:20  蓝幻ﹺ  阅读(7)  评论(0编辑  收藏  举报