Python中替代for循环的几种方法

Python中替代for循环的几种方法

1.for循环

之前博客有发过for循环的本质,但不究其本质,for循环我们可以总结为是对序列进行遍历操作,生成另一个序列的过程。

for i in iterable:
	do something

可以说写for循环结构已经成为当我们面对相关问题时的习惯,这也是在代码中十分常见的结构,但理性地去思考,for循环相比于扁平结构是否还有一些不足?

1.更多的代码行数
2.较差的代码可读性
3.运行性能较差

2.可以替代for循环的方法

(1)列表生成器

def f(x):
    return x**2

list1=[f(x) for x in range(1,11)]
list2=[x**2 for x in range(1,11)]
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

(2)生成器

节省内存,用的时候拿出

a=(i for i in range(10)) #生成器对象
#print(next(a)) 0
for i in a:
    print(i) #0 1 2 3 4 5 6 7 8 9
def foo():
    print('First')
    yield 1
    print('Second')
    yield 2
    print('Third')
    yield 3

print(foo)	#<function foo at 0x00000208561BA940>
print(foo())	# <generator object foo at 0x00000208561BFC10>
a = foo()
for i in a:
    print(i) # First 1 Second 2 Third 3

(3)内置函数

filter(func,*iterable)
#将可迭代对象值传到函数执行,返回符合条件的值生成迭代器(过滤)
map(func,*iterable)
#将可迭代对象每一个值传到函数执行,并且返回生成迭代器(处理)
reduce(func,sequence)
#要引入 from functools import reduce
#将包含两个参数的函数累计应用于序列的项,从左到右,直到序列缩减为一个值(结果为一个值)

版权声明:本文为endlessfc原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。