一.集合生成式
print({i ** 2 for i in {1,2,3,3}})
print({1 ** 2 for i in {1,2,3,9,12,9} if i % 3 == 0})
结果:
{1, 4, 9}
{1}
二.列表生成式
格式:[expression for i in 序列 if …]
- 生成一个列表,列表元素分别为[1 ** 2,2 ** 2,3 ** 2,…n ** 2]
方法1(一般的方法):
li = []
for i in range(1,8):
li.append(i ** 2)
print(li)
结果:
[1, 4, 9, 16, 25, 36, 49]
方法2(生成式方法):
print([i ** 2 for i in range(1,8)])
结果:
[1, 4, 9, 16, 25, 36, 49]
- 找出1-10之间的所有偶数,并返回一个列表(包含以这个偶数为半径的圆的面积)
import math
a = math.pi
print(a)
print(['%.3f' %(a*pow(i,2)) for i in range(2,11,2)])
结果:
['12.566', '50.265', '113.097', '201.062', '314.159']
- 找出1~100之间所有的质数
def isPrime(num):
for i in range(2,num):
if num % i == 0:
return False
else:
return True
print([i for i in range(2,101) if isPrime(i)])
结果:
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
- 找出/var/log目录下以.log结尾的文件
import os #导入系统交互模块
# print(os.listdir('/var/log')) #打印/var/log里的所有内容
print([filename for filename in os.listdir('/var/log') if filename.endswith('.log')])
结果:
['boot.log', 'yum.log', 'wpa_supplicant.log', 'Xorg.0.log']
三.字典生成式
- 将字典中的所有key值转变成大写
d = dict(a=1,b=2)
print(d)
new_d = {}
for i in d:
new_d[i.upper()] = d[i]
print(new_d)
print({k.upper():v for k,v in d.items()})
结果:
{'a': 1, 'b': 2}
{'A': 1, 'B': 2}
{'A': 1, 'B': 2}
- 将字典中小写(a…)与大写(A…)的value并值,最后以小写输出 d = dict(a=2,b=1,c=2,B=9,A=10)
# 方法一:
new_d = {}
for k,v in d.items():
low_k = k.lower()
if low_k not in new_d:
new_d[low_k] = v
else:
new_d[low_k] += v
print(new_d)
#方法二:
#用get方法,若key值存在则返回value值u,若不存在,则返回你传进的value值
print({k.lower():d.get(k.lower(),0) + d.get(k.upper(),0) for k in d})
结果:
{'a': 12, 'b': 10, 'c': 2}
{'a': 12, 'b': 10, 'c': 2}