我有两个列表列表。他们是不平等的。根据数据的不同,有时第一个列表会更长,有时第二个列表会更长,或者它们的大小可能相同。
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。
感谢您的帮助!
答案 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