python - 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]]
我不知道该怎么做-这可以通过循环来完成-非常感谢任何提示-谢谢!
解决方案
这并不难。如果你是一台人机,只需写下你会采取的步骤,然后教 Python 怎么做:
for l in list1:
for m in list2:
if m[0] <= l[1] <= m[1]:
l.append(m[2])
break
推荐阅读
- sql - 关于 SQL Server 数据库设计的问题
- c# - 用双精度解析字符串并获取错误输入字符串格式不正确
- typescript - 函数联合的合并参数的类型
- javascript - 如何将管理员消息与用户消息浮动右和浮动左分开
- css - Scss themify mixin 不适用于伪元素
- javascript - 使用 Node.JS 的推送通知在 Google Chrome 上不起作用
- python - 将每个实例带有错误的预测和真实类/值合并到 Pandas DataFrame 中
- python - 在遍历 Pandas 数据框时使用其他行值更新行值
- c++ - C++ Clang 发出有关未使用的模板变量的警告
- python - 如何在python中删除大文件的重复行