我如何访问指数,同时在一个序列上以一个为旋转的序列?

xs = [8, 23, 45]

for x in xs:
    print("item #{} = {}".format(index, x))

所需的产量:

item #1 = 8
item #2 = 23
item #3 = 45

当前回答

您可以使用范围(len(some_list)) 然后查看此类指数

xs = [8, 23, 45]
for i in range(len(xs)):
    print("item #{} = {}".format(i + 1, xs[i]))

或者使用Python的内置列表功能,允许您在列表上滚动并获取列表中的每个项目的指数和值。

xs = [8, 23, 45]
for idx, val in enumerate(xs, start=1):
    print("item #{} = {}".format(idx, val))

其他回答

古老的风格:

for ix in range(len(ints)):
    print(ints[ix])

列表理解:

[ (ix, ints[ix]) for ix in range(len(ints))]

>>> ints
[1, 2, 3, 4, 5]
>>> for ix in range(len(ints)): print ints[ix]
... 
1
2
3
4
5
>>> [ (ix, ints[ix]) for ix in range(len(ints))]
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)]
>>> lc = [ (ix, ints[ix]) for ix in range(len(ints))]
>>> for tup in lc:
...     print(tup)
... 
(0, 1)
(1, 2)
(2, 3)
(3, 4)
(4, 5)
>>> 

很容易从 0 以外的 1 开始:

for index, item in enumerate(iterable, start=1):
   print index, item  # Used to print in python<3.x
   print(index, item) # Migrate to print() after 3.x+
   

正如Python的标准一样,有几种方法可以做到这一点。在所有例子中,假设:lst = [1, 2, 3, 4, 5]

使用列表(被认为是最愚蠢的)


for index, element in enumerate(lst):
    # Do the things that need doing here

这也是我认为最安全的选择,因为进入无限回归的机会已经消失了,项目和其指数都保持在变量中,并且没有必要写下任何额外的代码才能访问项目。

创建一个变量以保持指数(使用为)


for index in range(len(lst)):   # or xrange
    # you will have to write extra code to get the element

创建一个变量以保持指数(使用时)


index = 0
while index < len(lst):
    # You will have to write extra code to get the element
    index += 1  # escape infinite recursion

总是有另一种方式


如前所述,有其他方法来做到这一点,没有在这里解释,他们甚至可能在其他情况下更适用。

for i in range(len(ints)):
   print(i, ints[i]) # print updated to print() in Python 3.x+ 

使用内置函数列():

for idx, x in enumerate(xs):
    print(idx, x)

它是非皮托尼的手动索引通过 i 在范围(len(xs)): x = xs(i) 或手动管理一个额外的状态变量。

查看 PEP 279 更多信息