mylist = ["aa123", "bb2322", "aa354", "cc332", "ab334", "333aa"]
我需要包含'aa'的所有項目的索引位置。我無法將枚舉()與部分字符串匹配相結合。我甚至不確定我是否應該使用枚舉。python - 根據部分字符串在列表中找到索引位置
我只需要返回索引位置:0,2,5
mylist = ["aa123", "bb2322", "aa354", "cc332", "ab334", "333aa"]
我需要包含'aa'的所有項目的索引位置。我無法將枚舉()與部分字符串匹配相結合。我甚至不確定我是否應該使用枚舉。python - 根據部分字符串在列表中找到索引位置
我只需要返回索引位置:0,2,5
indices = [i for i, s in enumerate(mylist) if 'aa' in s]
你的主意,用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]
沒有enumerate()
:
>>> mylist = ["aa123", "bb2322", "aa354", "cc332", "ab334", "333aa"]
>>> l = [mylist.index(i) for i in mylist if 'aa' in i]
>>> l
[0, 2, 5]
這很可能在O(n^2)中運行,而使用枚舉將是O(n)。 – Johnsyweb 2013-02-13 08:33:09
如果其中一個包含'aa'的字符串重複,這將返回錯誤的結果。 – 2013-02-13 10:01:10
真棒,完美的......非常感謝你。 – 2013-02-13 08:52:02
如何使這不區分大小寫? – abbood 2017-02-14 06:45:21
@abbood - 通過比較s.lower()' – StoryTeller 2017-02-14 11:22:08