【发布时间】:2018-08-29 11:25:18
【问题描述】:
我有一个这样的列表,但包含数千甚至数百万个元素:
test = [
("goodbye", "help", "buy","sell", "1.1.1.1", 25),
("hi dude", "text", "friends","love", "blablabla", 14),
("hi darling", "books", "letter","class", "club", 64)
]
查找包含单词“hi”的所有元素索引的最优化代码是什么?
在上面给出的示例中,它应该返回 test[1] 和 test[2]。
【问题讨论】:
-
恕我直言,这里没有太多优化空间。如果您一次需要所有索引,可以使用
[i for i, x in enumerate(test) if any('hi' in y for y in x)]之类的列表理解 -
我不认为它是 stackoverflow.com/questions/176918/… 的副本:
index()方法在这里没有多大帮助。 -
@Maximiliano 让它发挥作用。到目前为止,不要担心这里的表现。老实说,任何现代机器都可以在不到半秒的时间内处理数百万个这样的元素。找到解决方案后,请检查 if 是否存在性能问题。如果存在问题,请分析您的代码,然后寻找替代解决方案。
-
@brandizzi 在不使用 index() 方法的情况下,可能的重复链接中有几个答案。