【问题标题】:How to check in Python if one tuple is an exact, ordered subsequence of the other? [duplicate]如果一个元组是另一个元组的精确有序子序列,如何在 Python 中检查? [复制]
【发布时间】: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,(t3t1 的子元组)
  • check_sub_tuple(ti, tj) = False 用于示例中的所有其他元组对 titj

问题 1:是否有现成的 Python 功能?我知道我可以这样做:

set(my_tuple_2).issubset(my_tuple_1)

但这只是检查一个元组的元素是否包含在另一个元组中,我还需要顺序相同。

问题 2:我怎样才能对列表而不是元组做完全相同的事情?

【问题讨论】:

  • 你的意思是“子序列”吗?子是无序的。
  • 所以您的输入是列表/元组列表?那么示例中的确切输出呢?只是为了确认。
  • @Daniel Hao 没错,我要么有一个只有列表的列表,要么有一个只有元组的列表,我需要检查哪些列表/元组对是另一个的子序列
  • 如果元组由range(0, 256)中的整数组成,您可以使用bytes(ti) in bytes(tj)

标签: python list tuples


【解决方案1】:

我认为你可以使用这个:

t1 = [37, 5, 3, 22, 1]
t2 = [3, 22, 1]

any(t2 == t1[i:i+len(t2)] for i in range(0,len(t1)))

【讨论】:

    猜你喜欢
    • 2023-03-18
    • 1970-01-01
    • 2022-01-08
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    相关资源
    最近更新 更多