首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Iterable_1中检查iterable_2

如何在Iterable_1中检查iterable_2
EN

Stack Overflow用户
提问于 2015-07-27 23:39:46
回答 2查看 53关注 0票数 0

如果不迭代list_1 in list_2,那么如何检查list_1呢?有没有什么具体的“琵琶”方式,还是最好坚持:

代码语言:javascript
复制
for i in list_1:
  if i in list_2:

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-28 00:02:30

您似乎对list_1中的每个元素都在list_2中的情况感兴趣。

代码语言:javascript
复制
set(list_1) <= set(list_2)

很管用。

当然--如果list_2是一个列表,并且您想知道list_1是否是其中之一,那么一个简单的

代码语言:javascript
复制
list_1 in list_2

很管用。

或者,您可以询问list_1是否是list_2的一部分。

代码语言:javascript
复制
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的一个越来越多的子序列。我将把这些作为练习。

票数 3
EN

Stack Overflow用户

发布于 2015-07-28 02:21:56

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

对于具有内部条件/早期返回的迭代,任意函数和所有函数都是有效的。

此外,set操作(相交、联合、差异)也会有所帮助。当我仅仅看到列表1中的元素是否在列表2中时,我可能会选择它。

代码语言:javascript
复制
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!
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31665158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档