一、迭代、生成器、推导式
1.了解迭代器的使用和应用
2.使用迭代器生成序列
3.使用生成器生成序列
4.理解和使用列表推导式
迭代器:
迭代器可用于操作列表、字符串、元组、文件和字典。
迭代器可以使用_next_()方法移动到下一个元素。迭代器可以遍历任何可迭代的对象,包括列表、元组、字符串或目录。当没有更多的元素时,那么抛出一个StopIteration异常。
for 实现的迭代
L = [1, 2, 3, -4, -5, -6]
p = []
n = []
for num in L:
if(num>0):
p.append(num)
elif(num<0):
n.append(num)
print('positive numbers:', p, 'negative number', n)
结果:
positive numbers: [1, 2, 3] negative number [-4, -5, -6]
迭代:
L = [1, 2, 3, -4, -5, -6]
p = []
n = []
t = iter(L)
try:
while True:
x = t.__next__()
if x >= 0:
p.append(x)
else:
n.append(x)
except StopIteration:
print('positive number:', p, 'negative number:' , n)
结果:
positive number: [1, 2, 3] negative number: [-4, -5, -6]
定义迭代对象:
可以定义一个类,其中_init_、_iter_和_next_可以根据需求定义。init函数初始化类的变量,iter定义迭代机制,next实现跳转到下一项。
生成器:
生成器是生成所需序列的函数。
与函数存在一个区别。
def arithmetic_progression(a, d, n):
i =1
while i <=n:
yield (a+(i-1)*d)
i +=1
a= int(input())
d= int(input())
n= int(input())
ap = arithmetic_progression(a, d, n)
print(ap)
for i in ap:
print(i)
结果:
1
3
8
<generator object arithmetic_progression at 0x00000207A85D44C0>
1
4
7
10
13
16
19
22
推导式:
便于编程。
例如:
L1 = [x**3 for x in range(10)]
print(L1)
结果:
[0, 1, 8, 27, 64, 125, 216, 343, 512, 729]