Python迭代差异
为什么在Python中会发生这种情况,只调用iterable'(i)' 将打印:Python迭代差异,python,iteration,Python,Iteration,为什么在Python中会发生这种情况,只调用iterable'(i)' 将打印:3 4 5 但是调用iterable作为(a[i]) 将打印:456 我就是不明白。列表中的第一个元素以0开头 要从列表中获取数字1,您需要执行a[0] 因此,第二种方法是执行i[3],这是4,因为列表索引从0开始。这个过程一直持续到循环结束。在第一个版本中,您正在创建一个范围;您要求的是a[2](即3)和len(a)(即6)之间的整数: 与a的唯一关系是使用a中的值来构建范围。range()为您提供这些数字之间的整
3 4 5
但是调用iterable作为(a[i]
)
将打印:456
我就是不明白。列表中的第一个元素以0开头 要从列表中获取数字1,您需要执行
a[0]
因此,第二种方法是执行
i[3]
,这是4
,因为列表索引从0开始。这个过程一直持续到循环结束。在第一个版本中,您正在创建一个范围;您要求的是a[2]
(即3
)和len(a)
(即6)之间的整数:
与a
的唯一关系是使用a
中的值来构建范围。range()
为您提供这些数字之间的整数,包括起始值,因此从3到6(不包括6)计数就是生成数字3、4和5
在第二个示例中,然后使用这些数字索引回a
:
请注意,这些索引引用了a
中的值,这些值碰巧也是整数。每个索引的值与索引不同,索引和值也不同
您的困惑似乎源于这样一个事实:Python列表的索引从0开始,而不是从1开始:
索引0处的值,即a
中的第一个值,对于范围内的i(a[2],len(a))相当于范围(3,6)中的i的,因此i
将依次采用值3、4和5,正如您的第一个结果所确认的那样
对于第二个结果,您将依次打印a[3]
、a[4]
、和a[5]
,或4、5和6,正如第二个结果所确认的那样。这是因为索引的编号方式
a = [1, 2, 3, 4, 5, 6]
其中[1]在索引0处,[2]在索引1处,依此类推
在代码的第一部分:
a = [1, 2, 3, 4, 5, 6]
for i in range(a[2], len(a)):
print(i)
您要求python打印数字,即3、4和5
在代码的第二部分:
for i in range(a[2], len(a)):
print(a[i])
您要求python打印索引处的值,即4、5和6,因为a[2]
是a
的第三个元素,从0开始计算。当然,我怎么会错过它,我脑子里的数字太多了,谢谢大家!
>>> a[3]
4
>>> a[4]
5
>>> a[5]
6
>>> a[0]
1
a = [1, 2, 3, 4, 5, 6]
a = [1, 2, 3, 4, 5, 6]
for i in range(a[2], len(a)):
print(i)
for i in range(a[2], len(a)):
print(a[i])