【发布时间】:2016-11-19 20:44:13
【问题描述】:
我必须在嵌套列表中找到哪个列表有一个单词并返回一个布尔型 numpy 数组。
nested_list = [['a','b','c'],['a','b'],['b','c'],['c']]
words=c
result=[1,0,1,1]
我正在使用这个列表理解来做到这一点并且它有效
np.array([word in x for x in nested_list])
但我正在使用一个包含 700k 列表的嵌套列表,因此需要很长时间。另外,我必须这样做很多次,列表是静态的,但单词可以改变。
带有列表理解的 1 个循环需要 0.36 秒,我需要一种更快的方法,有什么方法可以做到吗?
【问题讨论】:
-
如果列表是静态的并且您经常这样做,您可以将其索引一次并使用该索引。由于索引本身很昂贵,因此单次通过是不值得的。
-
一次,作为
words,你会只有一个字符还是可以有多个? -
其实单词可以有更多的字符。如果 words = ['c','b'],那么我需要 2 个布尔数组:result=[[1,0,1,1],[1,1,1,0]]。
标签: python string performance numpy list-comprehension