2017-06-30 60 views

回答

3

你可以這樣做:

>>> 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')) 
2

我會做這樣的事情,使用列表理解,請注意不要用list作爲變量名:

>>> myList = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e']  
>>> [i for i, v in enumerate(myList) if v == "e"] 
[5, 8] 
1

,或者您可以使用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或其他名稱