Python 如何检查Iterable_2中的Iterable_1

Python 如何检查Iterable_2中的Iterable_1,python,python-3.x,iterable,Python,Python 3.x,Iterable,例如,如何在不迭代列表1的情况下检查列表2中是否列出了列表1?是否有任何特定的“pythonic”方法,或者最好坚持: for i in list_1: if i in list_2: 谢谢大家! 您似乎对列表_1中的每个元素也在列表_2中的情况感兴趣。在这种情况下,一个简单的 set(list_1) <= set(list_2) 工作 或者,您可以询问列表_1是否是列表_2的一部分。检查一下 list_1 in (list_2[i:j] for j in range(len(li

例如,如何在不迭代列表1的情况下检查列表2中是否列出了列表1?是否有任何特定的“pythonic”方法,或者最好坚持:

for i in list_1:
  if i in list_2:

谢谢大家!

您似乎对列表_1中的每个元素也在列表_2中的情况感兴趣。在这种情况下,一个简单的

set(list_1) <= set(list_2)
工作

或者,您可以询问列表_1是否是列表_2的一部分。检查一下

list_1 in (list_2[i:j] for j in range(len(list_2)+1) for i in range(j))

您还可以检查列表_1是否是列表_2的子多集,或者列表_1是否是列表_2的递增子序列。我将这些留作练习。

您似乎对列表1中的每个元素也在列表2中的情况感兴趣。在这种情况下,一个简单的

set(list_1) <= set(list_2)
工作

或者,您可以询问列表_1是否是列表_2的一部分。检查一下

list_1 in (list_2[i:j] for j in range(len(list_2)+1) for i in range(j))

您还可以检查列表_1是否是列表_2的子多集,或者列表_1是否是列表_2的递增子序列。我将这些留作练习。

Python对map和filter提供了一些功能支持,有助于避免迭代级别

对于具有内部条件/早期返回的迭代,any和all函数是有效的

此外,集合操作(相交、并集、差分)也会有所帮助。这可能是我在查看列表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!

Python对map和filter有一些功能支持,这有助于避免迭代级别

对于具有内部条件/早期返回的迭代,any和all函数是有效的

此外,集合操作(相交、并集、差分)也会有所帮助。这可能是我在查看列表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!

我能想到“列表2中的列表1”至少有5种可能的含义。你愿意分享你的观点吗?相关:我能想到“列表2中的列表1”至少有5种可能的含义。你愿意分享你的吗?相关:谢谢!这正是我试图学习的东西。我还尝试了一个“subset”练习,请告诉我是否有更好的方法:subset\u of=True而list\u 1:try:list\u 2.remove(list\u 1.pop())除了ValueError:subset\u of=False break print(subset\u of)抱歉,无法确定注释中代码的格式。谢谢!这正是我试图学习的东西。我还尝试了一个“子集”练习,请告诉我是否有更好的方法:subset_of=True而list_1:try:list_2.remove(list_1.pop())除了ValueError:subset_of=False break print(subset_of)抱歉,无法确定如何格式化注释中的代码。