- 内容较为简单,熟练掌握示例即可。
列表推导式
一般形式
# 示例一
li = [i for i in range(10)]
print(li) # [0,1,2,3,4,5,6,7,8,9]
# 示例二
li = [i+1 if i % 2 == 0 else i for i in range(10)]
print(li) # [1, 1, 3, 3, 5, 5, 7, 7, 9, 9]
# 示例三
lis = ["a","b","c","d","e","f","g"]
li = [lis[i] for i in range(len(lis)) if i % 2 == 0]
print(li) # ['a', 'c', 'e', 'g']
# 示例四(新浪微博面试题)
lis = [lambda x:x*i for i in range(10)]
"""
1.请问lis是什么? 9个函数
2.请问lis[0](2)的结果是什么? 18
"""
# 示例五(另一面试题)
def num():
return[lambda x:x*i for i in range(4)]
print([ m(2) for m in num() ]) # [6,6,6,6]
# 示例六(筛选,和示例二有区别)
lis = [i for i in range(10) if i%2 == 0]
print(lis) # [0, 2, 4, 6, 8]
嵌套
# 示例一
data_list = [[i, j] for i in range(1, 5) if i % 2 == 0 for j in range(1, 5)]
print(data_list) # [[2, 1], [2, 2], [2, 3], [2, 4], [4, 1], [4, 2], [4, 3], [4, 4]]
# 示例二
data_list = ["\t".join([f"{i}*{j}={i * j}" for i in range(1, j + 1)]) for j in range(1,10)]
print("\n".join(data_list))
"""
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
"""
# 示例三(一行打印九九乘法表)
print("\n".join(["\t".join([f"{i}*{j}={i * j}" for i in range(1, j + 1)]) for j in range(1,10)]))
"""
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
"""
集合推导式
-
集合推导式和列表推导式的格式基本相同,故不放示例演示
-
集合使用{ },而列表使用[ ];集合推导式生成的集合会自动去重,而列表推导式生成的列表不会。
字典推导式
# 示例一
dic = {"k"+str(i):i for i in range(5)}
print(dic) # {'k0': 0, 'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4}
# 示例二
keys = ["name","pwd","age"]
values = ["alex","123",18]
dic = {k:v for k,v in zip(keys,values)}
print(dic) # {'name': 'alex', 'pwd': '123', 'age': 18}