当前位置: 首页 > 面试题库 >

Python在整数列表中找到重复序列?

孙宏壮
2023-03-14
问题内容

我有一个列表列表,每个列表都有一个重复序列。我正在尝试计算列表中重复整数序列的长度:

list_a = [111,0,3,1,111,0,3,1,111,0,3,1]

list_b = [67,4,67,4,67,4,67,4,2,9,0]

list_c = [1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,23,18,10]

哪个会返回:

list_a count = 4 (for [111,0,3,1])

list_b count = 2 (for [67,4])

list_c count = 10 (for [1,2,3,4,5,6,7,8,9,0])

任何建议或技巧都将受到欢迎。我现在正在尝试使用re.compile来解决这个问题,但是它不太正确。


问题答案:

通过迭代2到一半序列长度之间的猜测来猜测序列长度。如果未发现任何模式,则默认返回1。

def guess_seq_len(seq):
    guess = 1
    max_len = len(seq) / 2
    for x in range(2, max_len):
        if seq[0:x] == seq[x:2*x] :
            return x

    return guess

list_a = [111,0,3,1,111,0,3,1,111,0,3,1] 
list_b = [67,4,67,4,67,4,67,4,2,9,0]
list_c = [1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,23,18,10]

print guess_seq_len(list_a)
print guess_seq_len(list_b)
print guess_seq_len(list_c)
print guess_seq_len(range(500))   # test of no repetition

得到(如预期):

4
2
10
1

根据要求,此替代方法可提供最长的重复序列。因此,它将为list_b返回4。唯一的变化是guess = x不是return x

def guess_seq_len(seq):
    guess = 1
    max_len = len(seq) / 2
    for x in range(2, max_len):
        if seq[0:x] == seq[x:2*x] :
            guess = x

    return guess


 类似资料:
  • 如果一列存在于两个数据帧之间,我想删除它。我检查它是否存在,然后尝试删除它,但它说找不到。 错误:

  • 我试图使用它们的共同点将两个表连接在一起,但是我一直在找不到特定的列,我可以清楚地看到该列在那里。

  • 问题内容: 我可以使用三个元素来重做,但是如果有序列的话: 它将把一个’seq’元素推入redis而不是三个数字。有什么办法可以将整个序列推送到Redis? 问题答案: 您可以使用此:

  • 我有两个列表:一个包含产品,另一个包含相关价格。列表可以包含未定义数量的产品。列表的示例如下所示: 产品:[“苹果”、“苹果”、“苹果”、“橙子”、“香蕉”、“香蕉”、“桃子”、“菠萝”、“菠萝”] 价格:['1.00','2.00','1.50','3.00','0.50','1.50','2.00','1.00','1.00'] 我希望能够从产品列表中删除所有重复的产品,并只保留与价格列表中唯

  • 所以我一直在尝试弄清楚如何打印一个出现在数字之前的有序数字列表,从python中的一个开始。让我向您展示我的意思。 这是我的例子。 python中是否有任何代码或内置函数允许我这样做?

  • 问题内容: 如果想基于每个嵌套列表的第一个元素评估重复项,谁能提出一个好的解决方案从嵌套列表中删除重复项? 主列表如下所示: 如果已经在第一位置出现了另一个具有相同元素的列表,那么我想删除该列表并得到以下结果: 您可以建议一种算法来实现此目标吗? 问题答案: 您是否关心保留订单/删除了哪些重复项?如果不是,则: 会做的。如果您想保留订单并想保留第一个订单,则: