I have two lists of lists with same shape.
list1 = [[1,2,3], [], [4,5], []]
list2 = [[1,2], [7], [4,5], []]
I need this list of lists:
[[1,2], [], [4,5], []]
How I can get it?
P.S.: These topics didn't help me:
I have two lists of lists with same shape.
list1 = [[1,2,3], [], [4,5], []]
list2 = [[1,2], [7], [4,5], []]
I need this list of lists:
[[1,2], [], [4,5], []]
How I can get it?
P.S.: These topics didn't help me:
Assume each list in list1
and list2
contains only distinct elements and you do not care about the ordering of the elements in output, you can use set
intersection to help you:
output = [list(set(l1) & set(l2)) for l1, l2 in zip(list1, list2)]
Loop through and use sets:
list1 = [[1,2,3], [], [4,5], []]
list2 = [[1,2], [7], [4,5], []]
intersections = [list(set(s1)&set(s2)) for s1, s2 in zip(list1, list2)]
outputs:
[[1, 2], [], [4, 5], []]
Get each sub-list by index of the shorter list.
[list(set(list1[x]) & set(list2[x])) for x in range(min(len(list1), len(list2)))]
# [[1, 2], [], [4, 5], []]
This will result in a list with the same length as the shortest input.
here it is:
list1 = [[1,2,3], [], [4,5], []]
list2 = [[1,2], [7], [4,5], []]
new_list = []
for i in range(len(list1)):
inter = [x for x in list1[i] if x in list2[i]]
new_list.append(inter)
print(new_list)
output:
[[1, 2], [], [4, 5], []]