首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:如何找出元组的子元组在元组中?

Python:如何找出元组的子元组在元组中?
EN

Stack Overflow用户
提问于 2016-12-05 02:33:10
回答 2查看 2.9K关注 0票数 4

例如,元组是(1,0,1,1,0),子元组是(1,0)

按递增顺序,如何找出这个子元组在元组中?

这是使用迭代逐个比较的唯一方法吗?

例如。(1,0,1,1,1,0) = (1,0,* )所以子元组(1,0)在元组中!

c.f.我不需要知道(1,0)在(1,0,1,1,0)中是这样的:

(1,0,1,1,0,1,0) =( *,1,0)所以(1,0)是in (1,0,1,1,1,0).=>错了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-20 19:25:05

内建序列类型的文档说,in操作可以进行子序列检查,但只对某些类型:

备注:

  1. 虽然in和非in操作在一般情况下仅用于简单的包含测试,但一些专门的序列(如str、字节和字节数组)也用于后续测试: >>> "gg" in "eggs" True

因此,如果您的数据仅为0到255之间的整数,则可以将其转换为字节以检查:

>>>bytes((1,0)) in bytes((1,0,1,1,1,0)) True

对于其他类型的数据,此表达式是一种单行迭代方式:

A = ('L', 'R') B = ('L', 'R', 'L', 'L', 'L', 'R') any(A == B[i:len(A) + i] for i in range(len(B) - len(A) + 1)) True

...though也许在for循环中写出来会更容易阅读。

这些方法将捕获(1,0),如果它出现在第二个元组中的任何地方,因此您标记为错误的示例将被匹配。如果您只想匹配第一个元组是从第二个元组中的第一个条目开始的,那么也许您可以切片并比较:

A= (1,0) B= (1,0,1,1,1,0) A == B:len(A) 真的

票数 6
EN

Stack Overflow用户

发布于 2020-04-22 23:06:27

代码语言:javascript
复制
main_tuple = (1, 2, 3, 4, 5)
subtuple = (1, 2)

if set(subtuple) <= set(main_tuple):
    print('subtuple is part of the main tuple')

听着,你需要把元组转换成set。如果您维护元组结构,它将无法工作。有了集合,您需要检查您的子元组是否小于或等于您的主元组。

代码语言:javascript
复制
MAIN_TUPLE = (1, 2, 3, 4, 5)

A = (1, 2)  # Is a subtuple
B = (5, 3, 2)  # Is a subtuple
C = (6, 7)  # No
D = (1, 8) # No
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40966286

复制
相关文章

相似问题

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