我有這個名單如何找到列表索引相同的物品
list = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e']
但是當我打電話list.index(「E」),它只返回第一個索引。有什麼方法可以返回兩個索引?
我有這個名單如何找到列表索引相同的物品
list = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e']
但是當我打電話list.index(「E」),它只返回第一個索引。有什麼方法可以返回兩個索引?
你可以這樣做:
>>> list_ = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e']
>>> [index for index, value in enumerate(list_) if value == 'e']
這是等效作者:
list_ = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e']
result = []
for index, value in enumerate(list_):
if value == 'e:'
result.append(index)
前面的例子(列表解析)更緊湊和快速呃比明確的循環。這是因爲在列表上調用.append()
會導致列表對象增長(以塊爲單位),以便單獨爲新元素創建空間,而列表理解首先收集所有元素,然後再創建列表以便一次適合元素。
作爲一個功能,更普遍的,那裏的元素你想要的指數可能會改變:
def get_all_indexes(list_, element):
return [index for index, value in enumerate(list_) if value == element]
print(get_all_indexes(['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e'], 'e'))
我會做這樣的事情,使用列表理解,請注意不要用list
作爲變量名:
>>> myList = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e']
>>> [i for i, v in enumerate(myList) if v == "e"]
[5, 8]
,或者您可以使用numpy的
import numpy as np
list = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e']
np.where(np.array(list)=="e")
,如果你想它來得到它列表,你可以使用
np.where(np.array(list)=="e")[0].tolist()
我強烈建議你不要打電話給你的變量關鍵字,如列表,字典?只是稱之爲my_list或其他名稱