【问题标题】:Python matching two listsPython匹配两个列表
【发布时间】:2021-08-06 06:46:04
【问题描述】:

我有两个列表:

list1 = [[0, 5], [5, 115], [115, 219], [219, 262], [262, 328], [328, 408], [408, 424], [424, 531], [531, 562], [562, 620], [620, 676], [676, 781], [781, 805], [805, 808], [808, 919], [919, 1009], [1009, 1112], [1112, 1183], [1183, 1241], [1241, 1254], [1254, 1283], [1283, 1323], [1323, 1346], [1346, 1362], [1362, 1383], [1383, 1472], [1472, 1548], [1548, 1559], [1559, 1578], [1578, 1600], [1600, 1642], [1642, 1693], [1693, 1700], [1700, 1763], [1763, 1843], [1843, 1861], [1861, 1966], [1966, 1982], [1982, 2135], [2135, 2150], [2150, 2159], [2159, 2197], [2197, 2233], [2233, 2253], [2253, 2301], [2301, 2358], [2358, 2377], [2377, 2394], [2394, 2419], [2419, 2438], [2438, 2453], [2453, 2486], [2486, 2506], [2506, 2515], [2515, 2528], [2528, 2554], [2554, 2559], [2559, 2577], [2577, 2637], [2637, 2694], [2694, 2716], [2716, 2737], [2737, 2764], [2764, 2777], [2777, 2779], [2779, 2779]]

list2 = [[0, 145, 0], [145, 169, 1], [169, 1693, 3], [1693, 1708, 1], [1708, 2729, 3], [2729, 2779, 0]]

我想匹配它们,好像 list1[1] 相等或介于 list2[1] 之间,它采用括号中的第三个值并将它们添加到 list1 中的列表(对不起,我的英语很差!)如果不是明确地适合一个,添加值 2。结果应该是这样的:

list1 = [[0, 5, 0], [5, 115, 0], [115, 219, 2], [219, 262, 3], [262, 328, 3], [328, 408, 3], [408, 424, 3], [424, 531, 3], [531, 562, 3], [562, 620, 3], [620, 676, 3], [676, 781, 3], [781, 805, 3], [805, 808, 3], [808, 919, 3], [919, 1009, 3], [1009, 1112, 3], [1112, 1183, 3], [1183, 1241, 3], [1241, 1254, 3], [1254, 1283, 3], [1283, 1323, 3], [1323, 1346, 3], [1346, 1362, 3], [1362, 1383, 3], [1383, 1472, 3], [1472, 1548, 3], [1548, 1559, 3], [1559, 1578, 3], [1578, 1600, 3], [1600, 1642, 3], [1642, 1693, 3], [1693, 1700, 1], [1700, 1763, 2], [1763, 1843, 3], [1843, 1861, 3], [1861, 1966, 3], [1966, 1982, 3], [1982, 2135, 3], [2135, 2150, 3], [2150, 2159, 3], [2159, 2197, 3], [2197, 2233, 3], [2233, 2253, 3], [2253, 2301, 3], [2301, 2358, 3], [2358, 2377, 3], [2377, 2394, 3], [2394, 2419, 3], [2419, 2438, 3], [2438, 2453, 3], [2453, 2486, 3], [2486, 2506, 3], [2506, 2515, 3], [2515, 2528, 3], [2528, 2554, 3], [2554, 2559, 3], [2559, 2577, 3], [2577, 2637, 3], [2637, 2694, 3], [2694, 2716, 3], [2716, 2737, 2], [2737, 2764, 0], [2764, 2777, 0], [2777, 2779, 0], [2779, 2779, 0]]

我不知道该怎么做 - 这可以通过循环来完成 - 任何提示都非常感谢 - 谢谢!

【问题讨论】:

    标签: python list loops


    【解决方案1】:

    其实没那么难。如果你是一台人机,只需写下你会采取的步骤,然后教 Python 如何去做:

    for l in list1:
        for m in list2:
            if m[0] <= l[1] <= m[1]:
                l.append(m[2])
                break
    

    【讨论】:

    • 感谢您的回答 - 这看起来非常好。如果可以的话,还有一个问题:如果 list1 =[[0,0]] 和 list2=[],我该如何处理?我尝试添加尝试/异常,但如果 l2 为空,我可能会添加到跳过,对吗?
    • 您希望得到什么答案?那不是规范的一部分。此代码不会抛出异常,但也不会更改原始列表。
    猜你喜欢
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 2021-01-10
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多