【问题标题】:Find pattern of elements between multiple lists查找多个列表之间的元素模式
【发布时间】:2023-02-04 09:07:39
【问题描述】:

拿这些清单:

[545, 766, 1015]
[546, 1325, 2188, 5013]
[364, 374, 379, 384, 385, 386, 468, 496, 497, 547]

我的实际模式只是找到递增 1 的数字,每个列表中只有一个 (For this example, would be 545, 546 and 547). 在实际发现它存在之后,我希望将序列中的第一个数字返回给我,以便我可以继续进行其他计算。

首选代码执行示例:

>>>[12, 64, 135, 23]   # input lists
>>>[84, 99, 65]
>>>[66, 234, 7, 43, 68]

>>>[64, 65, 66]        # found numbers by said pattern.

>>>return 64

我还没有想到任何值得写的功能......

【问题讨论】:

  • 你会总是输入超过 1 个列表吗?
  • 您想与我们分享您的第一次尝试

标签: python list math logic pattern-matching


【解决方案1】:
def search(a,b,c):
    for val in a:
        if (val+1) in b and (val+2) in c:
            return val
print(search([545, 766, 1015],[546, 1325, 2188, 5013],[364, 374, 379, 384, 385, 386, 468, 496, 497, 547]))

【讨论】:

    【解决方案2】:

    您可以使用集合:

    lists = [[545, 766, 1015],
             [546, 1325, 2188, 5013],
             [364, 374, 379, 384, 385, 386, 468, 496, 497, 547],
            ]
    
    sets = list(map(set, lists))
    
    out = [[x+i for i in range(len(sets))]
           for x in sets[0] if all(x+i in s for i, s in enumerate(sets[1:], start=1))]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-01
      • 2018-03-15
      • 2011-01-24
      • 1970-01-01
      • 2015-12-12
      • 1970-01-01
      • 2016-02-10
      • 2013-09-27
      相关资源
      最近更新 更多