2013-02-13 54 views

回答

52
indices = [i for i, s in enumerate(mylist) if 'aa' in s] 
+0

真棒,完美的......非常感謝你。 – 2013-02-13 08:52:02

+0

如何使這不區分大小寫? – abbood 2017-02-14 06:45:21

+0

@abbood - 通過比較s.lower()' – StoryTeller 2017-02-14 11:22:08

9

你的主意,用enumerate()是正確的。

indices = [] 
for i, elem in enumerate(mylist): 
    if 'aa' in elem: 
     indices.append(i) 

另外,作爲一個列表理解:

indices = [i for i, elem in enumerate(mylist) if 'aa' in elem] 
5

沒有enumerate()

>>> mylist = ["aa123", "bb2322", "aa354", "cc332", "ab334", "333aa"] 
>>> l = [mylist.index(i) for i in mylist if 'aa' in i] 
>>> l 
[0, 2, 5] 
+5

這很可能在O(n^2)中運行,而使用枚舉將是O(n)。 – Johnsyweb 2013-02-13 08:33:09

+1

如果其中一個包含'aa'的字符串重複,這將返回錯誤的結果。 – 2013-02-13 10:01:10

相關問題