首页 > 解决方案 > Python匹配两个列表

问题描述

我有两个清单:

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]]

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

标签: pythonlistloops

解决方案


这并不难。如果你是一台人机,只需写下你会采取的步骤,然后教 Python 怎么做:

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

推荐阅读