我有两个列表,它们是至少包含100行的二维列表。我想将A匹配到B,反之亦然。但是真正的问题是不是从A逐行键入以匹配B。是否有更快的方法来遍历B的所有行以匹配B的所有行?
我尝试了a [0]和a [1]和a [2]。此方法将起作用,但是我必须逐行输入很多内容。这将是很多类型的输入,尤其是如果有很多行的话?
我有两个列表,它们是二维列表。我想匹配A中的任何值以匹配B中的任何值
a=[[9, 15, 25],[4, 14, 18, 25],[11, 12, 24, 25],[4, 8, 9, 26]]
b=[[2, 4, 7, 13, 14],[3, 5, 8, 13, 14],[6, 9, 10, 13, 14],[5, 6, 7, 13, 15],[3, 4, 9, 13, 15],[2, 8, 12, 13, 15],[4, 6, 8, 14, 15],[2, 5, 9, 14, 15]]
b0 = [list(filter(lambda x: x in a[0], sublist)) for sublist in b]
b1 = [list(filter(lambda x: x in a[1], sublist)) for sublist in b]
b2 = [list(filter(lambda x: x in a[2], sublist)) for sublist in b]
b3 = [list(filter(lambda x: x in a[3], sublist)) for sublist in b]
是否有更快的方法遍历所有行?尤其是如果有很多行
答案 0 :(得分:2)
您可以这样做:
for item_a in a:
result = []
for item_b in b:
# Compare elements of lists
result.append(list(set(item_a) & set(item_b)))
print(result)
输出:
[[], [], [9], [15], [9, 15], [15], [15], [9, 15]]
[[4, 14], [14], [14], [], [4], [], [4, 14], [14]]
[[], [], [], [], [], [12], [], []]
[[4], [8], [9], [], [9, 4], [8], [8, 4], [9]]
编辑:
for idx,item_a in enumerate(a):
result = []
for item_b in b:
result.append(list(set(item_a) & set(item_b)))
print("{} : {}".format(idx,result))
输出:
0 : [[], [], [9], [15], [9, 15], [15], [15], [9, 15]]
1 : [[4, 14], [14], [14], [], [4], [], [4, 14], [14]]
2 : [[], [], [], [], [], [12], [], []]
3 : [[4], [8], [9], [], [9, 4], [8], [8, 4], [9]]
使用set.intersection()
的解决方案:
for idx,item_a in enumerate(a):
result = []
a = set(item_a)
for item_b in b:
result.append(list(a.intersection(item_b)))
print("{} : {}".format(idx,result))