列表推导式可以帮助我们快速得到一个我们需要的列表
得到一个1到20的列表
- a = [x for x in range(1,21)]
- print(a)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
得到一个1到20内的偶数列表
- a = [x for x in range(1,21) if x%2 == 0]
- print(a)
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
得到九九乘法表
- a = [x*y for x in range(1,10) for y in range(1,10)]
- print(a)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27, 4, 8, 12, 16, 20, 24, 28, 32, 36, 5, 10, 15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 36, 42, 48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 63, 8, 16, 24, 32, 40, 48, 56, 64, 72, 9, 18, 27, 36, 45, 54, 63, 72, 81]
列表生成器的语法与列表推导式的语法很相似,只需要将[ ]换成()
语法:( i for i in range(1,10))
它返回的是对象
- a = (i for i in range(1,7))
- print(a)
at 0x0000013F8FB0DB30>
因此我们想要拿到其中的元素需要使用next()
next()相当于一个指针,并且不会回退直到抛出异常
- a = (i for i in range(1,7))
- print(next(a))
- print(next(a))
- print(next(a))
- print(next(a))
- print(next(a))
- print(next(a))
- print(next(a))
1
2
3
4
5
6
Traceback (most recent call last):
File "E:\PyCharm\python\text.py", line 8, in
print(next(a))
StopIterationProcess finished with exit code 1
普通函数:
- #斐波那契数列
- def febonacci(num):
- a = []
- index = 0
- first = 1
- second = 1
- while index < num:
- a.append(first)
- first,second = second,first+second
- index += 1
- print(a)
-
- if __name__ == "__main__":
- febonacci(10)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
生成器函数:
- #斐波那契数列
- def febonacci(num):
- index = 0
- first = 1
- second = 1
- while index < num:
- yield first
- first,second = second,first+second
- index += 1
-
-
- if __name__ == "__main__":
- res = febonacci(10)
- i = 0
- while i < 10:
- i += 1
- print(next(res))
1
1
2
3
5
8
13
21
34
55