#列表推导式:
1 = [] for num in range(1,101): l1.append(num) print(1) #将上述for循环用列表表达式改写 l = [i for i in range(1,101)]
#列表推导式的两个形式:循环模式、筛选模式
#循环模式:遍历每一个元素,加工后依次存入列表,
#[②变量(加工后的变量) ①for 变量 in iterable]
l1 = [f‘{i}个小朋友‘ for i in range(1,15)] print(l1)
#筛选模式:遍历每一个元素,判断加工后依次存入列表。
[③变量(加工后的变量) ①for 变量 in iterable ②if条件]
l3 = [i for i in range(1,31) if i%2==0] print(l3)
#课堂练习:
#课堂练习1:三十以内可以被三整除的数:
l4 = [i for i in range(1,31) if i%3==0]
#课堂练习2:三十以内可以被三整除的平方
l5 = [i*i for i in range(1,31) if i%3==0]
#课堂练习3:找到嵌套列表中名字含有两个‘e’的所有名字
names = [[‘Tom‘, ‘Billy‘, ‘Jefferson‘, ‘Andrew‘, ‘Wesley‘, ‘Steven‘, ‘Joe‘], [‘Alice‘, ‘Jill‘, ‘Ana‘, ‘Wendy‘, ‘Jennifer‘, ‘Sherry‘, ‘Eva‘]] #注意最后留下的是筛选后的变量j l6 = [ j for i in names for j in i if j.count(‘e‘)==2] print(l5) #上述代码等价于: for i in names: for j in i: if j.count(‘e‘)==2: print(j)
#生成器表达式:
生成器表达式和列表推导式构建上的唯一区别,就是将列表推导式的[]换成了().
对于生成数据量比较大的对象,考虑用生成器表达式,节省内存。
对于生成数据量比较小的对象,考虑用列表推导式,节省内存。
# 生成器表达式:将列表推导式的 [] 换成() 即可。 g = (i for i in range(100000000000)) #生成一个生成器对象 print(g) #<generator object <genexpr> at 0x0000023D7B0DCC50> print(g.__next__()) #0 print(g.__next__()) #1 print(g.__next__()) #2
#字典推导式:
#完成字典mcase中键值的对调 mcase = {‘a‘: 10, ‘b‘: 34} mcase_frequency = {mcase[k]: k for k in mcase} #K是键 产生一个新的字典 print(mcase_frequency) #{10: ‘a‘, 34: ‘b‘}
#集合推导式:
squared = {x**2 for x in [1, -1, 2]} #注意集合和字典一样都是花括号
print(squared) # {1, 4} 集合的互异性
------------恢复内容结束------------
原文:https://www.cnblogs.com/labiii-home/p/12271748.html