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

xs = [8, 23, 45]

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

所需的产量:

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

当前回答

一个具有“对手”变量的圈子设置为一个启动器,这将是一个参数,在格式化行,作为项目号。

当我们通过“i”访问列表时,“i”被格式化为项目价格(或它是什么)。

listos = [8, 23, 45, 12, 78]
counter = 1
for i in listos:
    print('Item #{} = {}'.format(counter, i))
    counter += 1

出口:

Item #1 = 8
Item #2 = 23
Item #3 = 45
Item #4 = 12
Item #5 = 78

其他回答

正如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

总是有另一种方式


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

您可以使用指数方法:

ints = [8, 23, 45, 12, 78]
inds = [ints.index(i) for i in ints]

在评论中强调,如果在英寸中有重复,这种方法不会工作,下面的方法应该为英寸中的任何值工作:

ints = [8, 8, 8, 23, 45, 12, 78]
inds = [tup[0] for tup in enumerate(ints)]

或替代

ints = [8, 8, 8, 23, 45, 12, 78]
inds = [tup for tup in enumerate(ints)]

如果你想得到指数和值在英寸作为列表的<unk>。

它使用列表方法在这个问题的选择答案,但与列表理解,使它更快的代码较少。

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

除了上述所有优秀的答案之外,这里还有解决这个问题的解决方案,当与Pandas系列对象一起工作时。在许多情况下,Pandas系列有自定义/独特的指标(例如,独特的识别线),无法通过列出的()函数访问。

下面我们可以看到,列表()不会给我们所需的结果:

id, x in enumerate(xs): print("id #{} = {}".format(id, x)) 输出: # id #0 = 8 # id #1 = 23 # id #2 = 45

我们可以使用.items( ) 访问一个 pandas 系列的指标,以便使用 A for loop:

对于 id, x 在 xs.items(): 打印("id #{} = {}".format(id, x)) 输出: # id #G923002 = 8 # id #G923004 = 23 # id #G923005 = 45

很容易从 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+