您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python,为什么i = + 1不会导致无限循环?

Python,为什么i = + 1不会导致无限循环?

Python for循环是基于迭代器的“ for-each”循环。每次迭代开始时都会重新分配迭代变量。换句话说,以下循环:

In [15]: nums = 1,2,5,8

In [16]: for num in nums:
    ...:     print(num)
    ...:
1
2
5
8

等效于:

In [17]: it = iter(nums)
    ...: while True:
    ...:     try:
    ...:         num = next(it)
    ...:     except StopIteration:
    ...:         break
    ...:     print(num)
    ...:
1
2
5
8

同样,以下循环是等效的:

In [19]: for num in nums:
    ...:     print("num:", num)
    ...:     num += 1
    ...:     print("num + 1:", num)
    ...:
    ...:
num: 1
num + 1: 2
num: 2
num + 1: 3
num: 5
num + 1: 6
num: 8
num + 1: 9

In [20]: it = iter(nums)
    ...: while True:
    ...:     try:
    ...:         num = next(it)
    ...:     except StopIteration:
    ...:         break
    ...:     print("num:", num)
    ...:     num += 1
    ...:     print("num + 1:", num)
    ...:
num: 1
num + 1: 2
num: 2
num + 1: 3
num: 5
num + 1: 6
num: 8
num + 1: 9

请注意,C样式的for循环在Python中不存在,但是您始终可以编写while循环(c样式的for循环本质上是while循环的语法糖):

for(int i = 0; i < n; i++){
    // do stuff
}

等效于:

i = 0
while i < n:
    # do stuff
    i += 1

请注意,不同之处在于,在这种情况下,迭代 取决于i# do stuff修改的任何内容i都会影响迭代,而在前一种情况下,迭代取决于迭代器 。注意,如果我们确实修改了迭代器,则迭代会受到影响:

In [25]: it = iter(nums) # give us an iterator
    ...: for num in it:
    ...:     print(num)
    ...:     junk = next(it) # modifying the iterator by taking next value
    ...:
    ...:
1
5
python 2022/1/1 18:52:32 有327人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶