我想在嵌套串列中獲取“4”的索引,它正在作業,因為我抑制了錯誤。有什么替代方案嗎?
a = [[1,2,3],[4,5,6],[7,8,9]]
for i in range(len(a)):
try:
index = a[i].index(4)
print(i, index)
except:
pass
uj5u.com熱心網友回復:
如果在串列中找不到元素,該index方法將引發 a 。ValueError這就是第一次迭代拋出例外的原因。index在使用該方法之前,您可以捕獲錯誤或檢查元素是否在串列中。
這是一個例子:
a = [[1,2,3],[4,5,6],[7,8,9]]
def find_index(list_of_lists, item):
for sublist in list_of_lists:
try:
return sublist.index(item)
except ValueError:
continue
print(find_index(a, 4))
正如預期的那樣產生0。
或者,您可以實作一種look-before-you-leap方法并在嘗試使用該index方法之前檢查該元素是否存在于串列中。然而,這效率較低,因為檢查串列中是否存在元素是線性時間操作。
def find_index(list_of_lists, item):
for sublist in list_of_lists:
if item in sublist:
return sublist.index(item)
這效率較低且“pythonic”較少,但仍然可行。
uj5u.com熱心網友回復:
這是不會引發錯誤且不使用 index() 函式的代碼。
for i in range(len(a)):
for j in range(len(a[i])):
if a[i][j] == 4:
print("Found at", i, j)
break
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/504633.html
下一篇:如何通過流替換迭代回圈
