验证特定索引的两个列表列表

时间:2018-03-01 20:22:54

标签: python-2.7

我有两个列表列表。他们是不平等的。根据数据的不同,有时第一个列表会更长,有时第二个列表会更长,或者它们的大小可能相同。

L1 = [['X00010', '9654123', 4.1, 'No', 'No', 1.83, 3.8, 0.01, 90.01], \
      ['X00011', '2021230', 1.23, 'Yes', 'No', 1.86, 3.65, 0.15, 0.00001], \
      ['X00012', '2021230', 1.23, 'Yes', 'No', 1.86, 3.65, 0.15, 0.00001], \
      ['X00013', '9654173', 4.11, 'No', 'No', 1.83, 3.8, 0.01, 90.01], \
      ['X00014', '7754173', 4.11, 'No', 'No', 1.83, 3.8, 0.01, 90.01]]
L2 = [['X00020', '2021230', 1.23, 'Yes', 'No', 1.86, 3.65, 0.15, 0.00002], \
      ['X00021', '2221230', 1.23, 'Yes', 'No', 1.86, 3.65, 0.15, 0.00001], \
      ['X00022', '2021230', 1.23, 'Yes', 'No', 1.86, 3.65, 0.15, 0.00001]]

我需要遍历每个子列表,并查看每个子列表是否与索引处的元素匹配:2,3,4,5,6,7,8,然后在新列表中拉出匹配的子列表SAME = []以及与DIFFERENT = []

中其他列表中的任何其他子列表不匹配的那些

首先,我无法准确理解如何针对第二个列表循环第一个列表中的每个元素。

如果我使用zip(L1,L2)将两对两对,显然会遗漏较长列表中的所有元素。

如果我使用map(None, L1, L2),我可以根据最长时间进行压缩,但最终仍然会使用对索引< - >索引,并且不会从第一个列表中检查所有列表。

我在Python Cookbook中找不到清晰的解释。也许我错过了什么?

我在这个解决方案上遇到了Python 2.7。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这符合您的描述,我理解最好:

SAME = []
DIFF = []

for x1 in L1:
    DIFF.append( x1 ) # Assume it is different
    for x2 in L2:
        if x1[2:9] == x2[2:9]:
            SAME.append( DIFF.pop() )  # Move it from DIFF to SAME
            break