【python之路48】生成器表达式、推导式

一、生成器表达式

1、 生成器表达式为:

(结果 for 变量 in 可迭代的对象 if 条件)--》if条件可以省略

ge = (i for i in range(1, 11))
print(ge)  # <generator object <genexpr> at 0x0000023EA176B5C8>

for elment in ge:
    print(elment)  # 结果从1打印到10


# # 实际相当于
# def ge():
#     for i in range(1, 11):
#         yield i
# 
# for i in ge():
#     print(i)

二、推导式

1、列表推导式

[结果 for 变量 in 可迭代的对象 if 条件]        --》if条件可以省略

li = [i for i in range(1,11)]
print(li)  #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

li2 = [i for i in range(1,11) if i % 2 == 0]
print(li2) #[2, 4, 6, 8, 10]

2、字典推导式

[key:value for 变量 in 可迭代的对象 if 条件}        --》if条件可以省略

li1=["黑旋风","花和尚","豹子头","行者"]
li2=["李逵","鲁智深","林冲","武松"]

dic = {li1[i]:li2[i] for i in range(len(li1))}
print(dic)

#打印结果
#{'黑旋风': '李逵', '花和尚': '鲁智深', '豹子头': '林冲', '行者': '武松'}

3、集合推导式

{结果 for 变量 in 可迭代的对象 if 条件}        --》if条件可以省略}

se = {i for i in range(1,11)}
print(se)  #{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

4、注意:没有元组推导式,元组推导式的格式被生成器表达式占用

猜你喜欢

转载自www.cnblogs.com/sunshuhai/p/12404915.html