迭代
可以通过 for 循环来遍历 list 或 tuple,这种遍历我们称为迭代(Iteration)
只要是可迭代对象,都可以迭代,比如字典
默认情况下,字典迭代的是key值
如何让判断一个类型是否可迭代
from collections import Iterable #导入collections模块的Iterable类型判断方法
print(isinstance({'abc':1},Iterable))
True
列表生成式
Python 内置的非常简单却强大的可以用来创建 list的生成式
列表生成方法
- for循环
#输出0~9之间偶数的平方
li= []
for i in range(0,10,2):
li.append(i**2)
li
[0, 4, 16, 36, 64]
- 列表生成式
print([i**2 for i in range(0,10,2)])
[0, 4, 16, 36, 64]
列表生成式相对循环语句,代码简洁
#找出1~100之间所有质数
#质数(prime number)又称素数,有无限个。
#质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。
def isprime(num):
for i in range(2, num):
if num % i == 0:
return False
else:
return True
val = int(input("请输入一个数:"))
print([i for i in range(2, val) if isprime(i)])
请输入一个数:100
[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]
字典生成式
#合并大小写
#key值最终为小写
d1={'a':10,'b':3,'A':10,'B':8}
print({k.lower():d1.get(k.upper(),0)+d1.get(k.lower(),0)for k,v in d1.items()})
{'a': 20, 'b': 11, 'c': 13}
生成器
通过列表生成式,我们可以直接创建一个列表,受到内存限制,列表容量肯定是有限的
创建一个包含 100 万个元素的列表,占用很大的存储空间
- 生成器是什么?
在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的 list,从而节省大量的空间。在 Python 中,这种一边循环一边计算的机制,称为生成器(Generator)
读取生成器
- next()
- for循环
#Fibnonacci数列
#1,1,2,3,5,8,13,....
#yield:函数中带有yield,那么这个函数的返回值就是一个生成器
#如果要执行函数内容,需要调用next方法或者for循环
#当执行next方法时,遇到yield程序停止
#直到下一次next方法时,从上一次yiled停止的地方继续执行,遇到yeild停止
def fibnnonacci(num): #num表示将来显示几个值
a,b,count = 0,1,0 #count是已经显示过的次数
while count<=num:
yield b
a,b = b,a+b
count+=1
res = fibnnonacci(100)
print(next(res))
print(next(res))
print(next(res))
print(next(res))
1
1
2
3
Process finished with exit code 0
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。