例如,元组是(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).=>错了。
发布于 2017-06-20 19:25:05
内建序列类型的文档说,in操作可以进行子序列检查,但只对某些类型:
备注:
>>> "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) 真的
发布于 2020-04-22 23:06:27
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。如果您维护元组结构,它将无法工作。有了集合,您需要检查您的子元组是否小于或等于您的主元组。
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) # Nohttps://stackoverflow.com/questions/40966286
复制相似问题