Python推导式&迭代器
推导式
列表推导式
- 列表生成式(推导式)即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。
- 列表表达式可以是任意的,意思是你可以在列表中放入任意类型的对象。返回结果将是一个新的列表,在这个以if和for语句为上下文的表达式运行完成之后产生。
- 列表推导式:格式:[表达式 fo r变量 in 旧列表]或者[表达式 for 变量 in 旧列表 if条件]
#过滤掉长度小于或者等于3的人名
names = ['tom','lily', 'abc','jack','steven','bob','ha']
result = [name for name in names if len (name) > 3]
result = [name.capitalize() for name in names if len (name) > 3]
#capitalize()单词首字母大写
#100以内可以被3和5整除的数
newlist = [i for i in range(1, 101) if i%3 == O and i%5 == 0]
print (newlist)
#[(偶数,奇数),(), (), ()] [(0,1), (0,3),(0,5),(0, 7),(0,9),(2, 1),(2, 3)...]
newlist=[(x,y)for x in range(5) if x%2 == 0 for y in range(10) if y%2 != 0]
print (newlist)
# listl =[[1,2,3],[4,5,6],[7,8,9],[1,3,5]] --->[3, 6, 9, 5]
listl = [[1, 2, 3],[4, 5,6],[7,8, 9],[1, 3, 5]]
newlist = [i[-1] for i in list1]
#if薪资大于5000加200,低于等于5000加500
dictl = {
'name' :'tom','salary': 5000}
dict2 = {
'name' :'lucy','salary': 8000}
dict3 = {
'name';'jack','salary' : 4500}
dict4 = {
' name' :'lily','salary' : 3000}
list1 = [dict1, dict2, dict3, dict4]
newlist = [employte['salary'] + 200 if employee[' salary' ] > 5000 else employee[' salary'] + 500 for employee in list1]
案例解析
#接收变量k,a,b
s = '51 5000 10000'
li2=[int(item) for item in s.split()]
#生成一个列表,列表元素分别为[1**1,2**2,3**3,4**4...n*n]
li1 = [i**i for i in range(1,8)]
# 找出1~8中的偶数的平方
li = [i ** 2 for i in range(