如何在循环中找到Python上的数组元素的索引

时间:2011-05-07 12:12:58

标签: python for-loop indexing while-loop

很抱歉,我对编程很新,似乎找不到任何与我需要的东西有关的东西......

while i<size(Array):
      for index, k in enumerate(Array1):
             if (k==Array[i]):
                   print index
                   i=i+1

上面的代码显示了索引超出范围的输出... 请注意,Array1的元素少于Array。

我想知道如何在没有错误的情况下运行循环,我不确定导致错误的原因。

谢谢!

5 个答案:

答案 0 :(得分:1)

我是一个索引,你经常更新它。移动i = i + 1的缩进以消除索引越界。

while i<size(Array):
      for index, k in enumerate(Array1):
             if (k==Array[i]):
                   print index
      i=i+1

答案 1 :(得分:1)

如果您只想要第一个索引(或者只有一个索引),那么您可以使用索引函数:

for i in array2:
    if i in array1:
        print array1.index(i)

获取指数列表:

print [array2.index(i) for i in array1 if i in array2]

答案 2 :(得分:1)

您可以使用in成员资格测试运算符测试值是否在列表中:

Array = [1,2,3,4,5,6,7,8]
Array1 = [2,9,3,9,1,9,2]

for i, value in enumerate(Array1):
    if value in Array:
        print i

输出

0
2
4
6

答案 3 :(得分:0)

看起来好像要在内部数组中打印值与输出数组中的值匹配的所有索引:

array1 = [1,2,3,4,5,6,7,8]
array2 = [2,9,3,9,1,9,2]
for i,a1 in enumerate(array1):
    for j,a2 in enumerate(array2):
        if a1 == a2:
            print j

输出:

4
0
6
2

如果你想收集索引,你就是列表理解:

print [j for i,a1 in enumerate(array1) for j,a2 in enumerate(array2) if a1 == a2]

输出:

[4, 0, 6, 2]

或者按顺序排列:

print sorted(j for i,a1 in enumerate(array1) for j,a2 in enumerate(array2) if a1 == a2)

输出:

[0, 2, 4, 6]

答案 4 :(得分:0)

while i<size(Array):
      for index, k in enumerate(Array1):
             if (k==Array[i]):
                   print index
                   i=i+1

如果我理解正确,你认为我不应该超过Array的大小,因为你有一段时间i < size(Array)但是while条件只控制循环是否会重复,它不能保证我将在整个循环中保持小于大小。

你似乎认为这将循环遍历数组一次,但因为一个循环在另一个循环中:循环本身将重复。

在这种情况下,对于Array1中的每个元素,i在内部循环内递增一次,这导致它变得太高而无法索引数组。

我认为你想要的是同时迭代两个列表。不要通过创建两个循环来执行此操作,只需要一个循环。

for index, k in enumerate(Array):
     if k == Array1[index]:
          print index

更好的方法,但对初学者来说可能更难理解的是:

for index, (value1, value2) in enumerate(zip(Array, Array1)):
   if value1 == value2:
        print index

Zip将两个列表“拉链”在一起,这样可以很容易地并行迭代这两个列表。