使用列表haystack
和needles
haystack = ['a', 'b', 'c', 'V', 'd', 'e', 'X', 'f', 'V', 'g', 'h']
needles = ['V', 'W', 'X', 'Y', 'Z']
我需要生成一个列表,其中包含needles
中的任何元素在haystack
中出现的索引。在这种情况下,这些索引是3、6和8。result = [3, 6, 8]
我找到的这个问题非常相似,而且已经被优雅地解决了。
result = [haystack.index(i) for i in needles]
很遗憾,这个解决方案在我的情况下会出现ValueError: 'W' is not in list
。原因是这里的区别在于needles
的一个元素可能会在haystack
中出现多次或者根本没有出现。
换句话说,haystack
中可能没有针,也可能有很多针。
needles
放入一个集合中绝对是更好的解决方案。哈希表查找绝对可以提高性能。 - Anzel