1 # 列表推导式
2 # [ 每一个元素或是和元素相关的操作 for 元素 in 可迭代数据类型 ]
3 # [ 满足条件的元素相关的操作for 元素 in 可迭代数据类型 if 元素相关的条件 ]
4
5
6 # 30以内所有能被3整除的数
7 print([ i for i in range(30) if i % 3 == 0 ]) # 列表推导式
8
9
10 # 30以内所有能被3整除的数的平方
11 print([i * i for i in range(30) if i % 3 == 0])
12
13
14 # 找到嵌套列表中名字含有两个'e'的所有名字
15 names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
16 ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
17 # 第一次for得到里里面的两个list,第二次for得到每个list中的每个元素,之后用if判断元素是否含有两个e,然后在最开始得到满足条件的元素
18 print([ name for lst in names for name in lst if name.count('e') == 2 ]) # ['Jefferson', 'Wesley', 'Steven', 'Jennifer']
19
20 # ----------------------------------------------
21
22 # 生成器只是将列表推导式的[]变成(),在就是得到的是一个生成器,用生成器的方法操作就行
23
24 # ------------------------------------------------
25
26 # 字典推导式
27 # 将以个字典的key和value对调
28 mcase = {'a' : 10, 'b' : 34}
29 mcase_frequency = {mcase[k] : k for k in mcase}
30 print(mcase_frequency) # {10: 'a', 34: 'b'}
31
32 # 合并大小写对应的value值,将k统一成小写
33 mcase = {'a' : 10, 'b' : 34, 'A' :7, 'Z': 3}
34 mcase_frequency = {k.lower() : mcase.get(k.lower(), 0 ) +mcase.get(k.upper(), 0) for k in mcase.keys()}
35 print(mcase_frequency) # {'b': 34, 'z': 3, 'a': 17}
36
37
38 # ______________________________________
39
40 # 集合推导式
41 # 计算列表中每个值得平方,自带去重功能(集合里面不会有重复的元素).集合推导式的使用{}括起来
42 squared = { x ** 2 for x in {1, -1, 2}}
43 print(squared) # {1, 4}
44
45
46 # 各种推导式 : 生成器、列表、字典、集合
47 # 遍历操作
48 # 筛选操作