亲宝软件园·资讯

展开

python列表生成器迭代器

测试开发技术修炼 人气:0

列表生成式基础语法

[exp for iter_var in iterable (if conditional)]

原理:

优先于for和if循环:

1. 使用列表生成式,一行解决for循环

# 实现[1,2,3,4,5]的列表
alist1 = list(range(1,6))
print(alist1)
# 实现[1,4,9,16,25,36,49]的列表
alist2 = []
for i in range(1,8):
    alist2.append(i*i)
print(alist2)
# 用一行实现
alist = [i*i for i in range(1,8)]
print(alist)
#结果:
[1, 2, 3, 4, 5]
[1, 4, 9, 16, 25, 36, 49]
[1, 4, 9, 16, 25, 36, 49]

2. 双层循环

list2 = [x+y for x in range(1,5) for y in range(1,6)]
#结果:
[2, 3, 4, 5, 6, 3, 4, 5, 6, 7, 4, 5, 6, 7, 8, 5, 6, 7, 8, 9]

3. 加判断语句,条件过滤

list3 = [x for x in range(1,10) if x>5]
print(list3)
#结果:
[6, 7, 8, 9]

4. 加入函数

L = ['Heli','JACK','ab']
l1 = [i.lower() for i in L]
print(l1)
#结果:
['heli', 'jack', 'ab']

5. 常见几种迭代器:range、 zip 、 enumerate 、 filter 、 reduce

zip生成列表,生成字典

zip()函数接受一系列可迭代对象作为参数,将不同对象中相对应的元素打包成一个元组(tuple),返回由这些元组组成的list列表

l1 = [1,3,6]
l2 = [5,8,9]
for (x,y) in zip(l1,l2):
    print(x,y,x+y)
#结果:
1 5 6
3 8 11
6 9 15
keys = ['a','c','f']
vals = [1,7,3]
D2 = {}
for (k,v) in zip(keys,vals): D2[k]=v
print(D2)
#结果:{'a': 1, 'c': 7, 'f': 3}

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环中

enumerate(seq, [start=0]) ,返回枚举对象

seasons = ['spring', 'summer', 'winter']
a = list(enumerate(seasons))
for i,element in enumerate(seasons):
  print(i,element)
#结果:
0 spring
1 summer
2 winter

关于filter 、 reduce,具体可查看上一篇文章

python高阶函数使用教程示例

加载全部内容

相关教程
猜你喜欢
用户评论