循环的工作
Workings of loops
我有两个循环来查找列表中项目的乘积。如下所示:
循环 A
product = 1
for i in [1, 2, 4, 8]:
product *= i
print(product) # result= 64
循环 B
product = 1
i = iter([1, 2, 4, 8])
while True:
try:
product *= next(i)
except StopIteration:
break
print(product) # prints: 64
我的问题是 for 循环内部发生了什么,它显式调用了一个迭代器,即:iter([1,2,4,8]) 是必要的?
不能python辨别出 [1,2,4,8] 是一个列表,因此是一个可迭代的,就像它在 for 循环中所做的那样?
You have used iter()
in while
loop which return an iterator object of your current object, so then you can all the next()
function on it to Retrieve the next item from the iterator.This 可以帮助您在不使用 for
循环的情况下访问可迭代对象的项目,也因为迭代器是一次性迭代器,您不能再次迭代 i
。
python 中的 for
语句根据定义是一个迭代循环。 while
语句是非迭代的,因此必须为其创建一个迭代器。来自 documentation:
for
Python’s for statement iterates over the items of any sequence (a list or a string), in the order that they appear in the sequence.
while
The while loop executes as long as the condition (here: True
) remains true.
循环 A 和循环 B 代表通过不同的方法完成同一件事的两种不同方式。
循环 A 使用 for
语句遍历给定列表 [1, 2, 4, 8]
循环 B 使用 while
语句,根据定义,该语句是非迭代的,并一直持续到给出假条件或 break
。
为了结束 while 循环,循环 B 在列表中建立一个迭代器 i = iter()
。当next(i)
到达迭代器i
的末尾时,它触发异常,它使用break
退出while
循环。
环路 A 被许多人认为是更 pythonic 和更安全的以这种方式计算乘积的方法。
我有两个循环来查找列表中项目的乘积。如下所示:
循环 A
product = 1
for i in [1, 2, 4, 8]:
product *= i
print(product) # result= 64
循环 B
product = 1
i = iter([1, 2, 4, 8])
while True:
try:
product *= next(i)
except StopIteration:
break
print(product) # prints: 64
我的问题是 for 循环内部发生了什么,它显式调用了一个迭代器,即:iter([1,2,4,8]) 是必要的?
不能python辨别出 [1,2,4,8] 是一个列表,因此是一个可迭代的,就像它在 for 循环中所做的那样?
You have used iter()
in while
loop which return an iterator object of your current object, so then you can all the next()
function on it to Retrieve the next item from the iterator.This 可以帮助您在不使用 for
循环的情况下访问可迭代对象的项目,也因为迭代器是一次性迭代器,您不能再次迭代 i
。
python 中的 for
语句根据定义是一个迭代循环。 while
语句是非迭代的,因此必须为其创建一个迭代器。来自 documentation:
for
Python’s for statement iterates over the items of any sequence (a list or a string), in the order that they appear in the sequence.
while
The while loop executes as long as the condition (here:
True
) remains true.
循环 A 和循环 B 代表通过不同的方法完成同一件事的两种不同方式。
循环 A 使用 for
语句遍历给定列表 [1, 2, 4, 8]
循环 B 使用 while
语句,根据定义,该语句是非迭代的,并一直持续到给出假条件或 break
。
为了结束 while 循环,循环 B 在列表中建立一个迭代器 i = iter()
。当next(i)
到达迭代器i
的末尾时,它触发异常,它使用break
退出while
循环。
环路 A 被许多人认为是更 pythonic 和更安全的以这种方式计算乘积的方法。