簡體   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