繁体   English   中英

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

[英]How do you find the index of an element in an Array on Python while in loop

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

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

上面的代码提供了一个索引超出范围的输出...注意,Array1的元素少于Array。

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

谢谢!

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

while i<size(Array):
      for index, k in enumerate(Array1):
             if (k==Array[i]):
                   print index
      i=i+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]

您可以使用in membership测试运算符测试值是否在列表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

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

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]
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在内部循环内递增一次,这导致它变得太高而无法索引Array。

我想你想要的是同时迭代两个列表。 不要通过创建两个循环来做到这一点,你只需要一个循环。

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将两个列表“拉链”在一起,这使得很容易并行地迭代这两个列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM