如果不迭代list_1 in list_2,那么如何检查list_1呢?有没有什么具体的“琵琶”方式,还是最好坚持:
for i in list_1:
if i in list_2:谢谢!
发布于 2015-07-28 00:02:30
您似乎对list_1中的每个元素都在list_2中的情况感兴趣。
set(list_1) <= set(list_2)很管用。
当然--如果list_2是一个列表,并且您想知道list_1是否是其中之一,那么一个简单的
list_1 in list_2很管用。
或者,您可以询问list_1是否是list_2的一部分。
list_1 in (list_2[i:j] for j in range(len(list_2)+1) for i in range(j))您也可以检查list_1是否是list_2的一个子集合,或者list_1是否是list_2的一个越来越多的子序列。我将把这些作为练习。
发布于 2015-07-28 02:21:56
Python对map和filter提供了一些功能支持,这有助于避免迭代的级别。
对于具有内部条件/早期返回的迭代,任意函数和所有函数都是有效的。
此外,set操作(相交、联合、差异)也会有所帮助。当我仅仅看到列表1中的元素是否在列表2中时,我可能会选择它。
list_1 = [ 2, 3 ]
list_2 = [ 1, 2, 3, 4 ]
print set(list_1) in set(list_2) # True
# a more functional approach, although really only makes sense for more specific complex examples!
import operator,itertools,functools
is_in_list_2 = functools.partial(operator.contains,list_2)
print all(itertools.imap(is_in_list_2,list_1)) # will hopefully not call contains more than it needs to!https://stackoverflow.com/questions/31665158
复制相似问题