【发布时间】:2021-05-19 21:49:21
【问题描述】:
我有一个不同长度的元组列表,需要找到一种方法来检查是否有元组是彼此的精确有序子序列。我将用一个例子来说明我在这种情况下的意思:
假设我有以下元组:
t1 = (37, 5, 3, 22, 1)
t2 = (3, 5, 22)
t3 = (3, 22, 1)
t4 = (37, 41, 19)
让我们调用假设函数check_sub_tuple。然后该函数应给出以下输出:
-
check_sub_tuple(t1, t2) = False,(t2不是t1的子元组) -
check_sub_tuple(t1, t3) = True,(t3是t1的子元组) -
check_sub_tuple(ti, tj) = False用于示例中的所有其他元组对ti和tj
问题 1:是否有现成的 Python 功能?我知道我可以这样做:
set(my_tuple_2).issubset(my_tuple_1)
但这只是检查一个元组的元素是否包含在另一个元组中,我还需要顺序相同。
问题 2:我怎样才能对列表而不是元组做完全相同的事情?
【问题讨论】:
-
你的意思是“子序列”吗?子集是无序的。
-
所以您的输入是列表/元组列表?那么示例中的确切输出呢?只是为了确认。
-
@Daniel Hao 没错,我要么有一个只有列表的列表,要么有一个只有元组的列表,我需要检查哪些列表/元组对是另一个的子序列
-
如果元组由
range(0, 256)中的整数组成,您可以使用bytes(ti) in bytes(tj)。