Người mới bắt đầu Python ở đây.
Tôi có 2 danh sách lồng nhau mà tôi muốn hợp nhất:
list1 = ['a',
[b, c],
[d, e],
[f, g, h] ]
list2 = [[p,q],
[r, s],
[t],
[u, v, w] ]
Đầu ra mà tôi đang tìm kiếm là:
list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
Điều này có thể được thực hiện mà không cần bất kỳ thư viện bên ngoài nào không? Lưu ý: Len [list1] = len [list2]
Phương pháp số 3: Sử dụng Starmap [] và Concat [].
Examples:
Input : lst1 = [[5, 9], [8, 2, 6], [3, 4]] lst2 = [[9, 5, 8], [2, 6], [3, 4, 1]] Output : [[9, 5], [8], [2, 6], [3, 4], [1]] Input : lst1 = [['a', 'b', 'c'], ['x']] lst2 = [['b', 'c', 'y'], ['x', 'y']] Output : [['b', 'c'], ['x'], ['y'], ['a']]
Cách tiếp cận số 1: Bằng cách đặt giao nhau bằng cách sử dụng functools.reduce [] Phương thức này sử dụng giao lộ đặt để tính toán từng giao lộ, sau đó thêm bất kỳ mục nào còn lại [nghĩa là các mục xuất hiện trên một trong hai danh sách]. Trước tiên chúng tôi sẽ sử dụng functools.reduce [] để mang lại các yếu tố duy nhất của ‘LST1, và‘ LST2, và lưu chúng vào ‘temp1, và‘ temp2. Sau này, hãy tìm giao điểm tập hợp của cả hai danh sách trong ‘LST3. Cuối cùng, hãy tìm sự khác biệt đối xứng của ‘LST1, và‘ LST2, mang lại các mục xuất hiện chỉ trong một trong 2 bộ và nối nó vào ‘LST3.By set intersection using functools.reduce[]
This method uses the set intersection to compute each intersection, then add any item which is leftover
[that is, items appearing on only one of the two lists]. We will first use functools.reduce[] to yield unique elements of ‘lst1’ and ‘lst2’ and save them to ‘temp1’ and ‘temp2’ respectively. After this, find the set intersection of both the list in ‘lst3’. At last, find the symmetric difference of ‘lst1’ and ‘lst2’, which yields the items which appear in only one of the 2 sets and append it to ‘lst3’.
Python3
import
itertools
import
functools
def
list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
0list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
1list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
2list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
3 list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
4list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
5list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
6list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
7 list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
8list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
9______list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
1Input : lst1 = [[5, 9], [8, 2, 6], [3, 4]] lst2 = [[9, 5, 8], [2, 6], [3, 4, 1]] Output : [[9, 5], [8], [2, 6], [3, 4], [1]] Input : lst1 = [['a', 'b', 'c'], ['x']] lst2 = [['b', 'c', 'y'], ['x', 'y']] Output : [['b', 'c'], ['x'], ['y'], ['a']]4
list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
3 list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
4list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
5list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
6list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
7 list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
8list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
9______list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
1[[9, 5], [8], [2, 6], [3, 4], [1]]6
list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
3 [[9, 5], [8], [2, 6], [3, 4], [1]]8
[[9, 5], [8], [2, 6], [3, 4], [1]]9
list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
6list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
9[[9, 5], [8], [2, 6], [3, 4], [1]]2
list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
9[[9, 5], [8], [2, 6], [3, 4], [1]]4
[[9, 5], [8], [2, 6], [3, 4], [1]]5
[[9, 5], [8], [2, 6], [3, 4], [1]]6
[[9, 5], [8], [2, 6], [3, 4], [1]]7
[[9, 5], [8], [2, 6], [3, 4], [1]]8
[[9, 5], [8], [2, 6], [3, 4], [1]]9
Các
list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
1itertools
2[[9, 5], [8], [2, 6], [3, 4], [1]]6
itertools
4[[9, 5], [8], [2, 6], [3, 4], [1]]8
itertools
6list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
1itertools
8 itertools
9import
0
list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
3 import
2import
3import
4import
5import
6__7777474797474functools
7
list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
3 import
2import
5import
4import
3import
4__7777676797474list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
06list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
07Output:
[[9, 5], [8], [2, 6], [3, 4], [1]]
& nbsp; Cách tiếp cận #2: Bằng cách đặt giao lộ bằng Filter This là một cách tiếp cận hiệu quả đối với cách tiếp cận #1 vì nó đơn giản hóa giao điểm. Đầu tiên, làm phẳng các danh sách lồng nhau. Lấy giao nhau bằng Filter [] và lưu nó vào ‘LST3. Bây giờ tìm các yếu tố không phải trong LST1 hoặc trong LST2 và lưu chúng vào ‘tạm thời. Cuối cùng, hãy nối ‘Temp, vào‘ LST3, & NBSP;
Approach #2 : By set
intersection using filter
This is an efficient approach over approach #1 as it simplifies the intersection. First, flatten the nested lists. Take Intersection using filter[] and save it to ‘lst3’. Now find elements either not in lst1 or in lst2, and save them to ‘temp’. Finally, append ‘temp’ to ‘lst3’.
Python3
import
itertools
list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
10 list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
11import
list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
5def
list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
0list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
1list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
2list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
3 list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
4list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
5list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
6list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
7 list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
8list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
9______list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
1Input : lst1 = [[5, 9], [8, 2, 6], [3, 4]] lst2 = [[9, 5, 8], [2, 6], [3, 4, 1]] Output : [[9, 5], [8], [2, 6], [3, 4], [1]] Input : lst1 = [['a', 'b', 'c'], ['x']] lst2 = [['b', 'c', 'y'], ['x', 'y']] Output : [['b', 'c'], ['x'], ['y'], ['a']]4
list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
3 list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
4list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
5list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
6list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
7 list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
8list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
9______list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
1[[9, 5], [8], [2, 6], [3, 4], [1]]6
list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
3 [[9, 5], [8], [2, 6], [3, 4], [1]]8
[[9, 5], [8], [2, 6], [3, 4], [1]]9
list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
6list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
9[[9, 5], [8], [2, 6], [3, 4], [1]]2
list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
9[[9, 5], [8], [2, 6], [3, 4], [1]]4
[[9, 5], [8], [2, 6], [3, 4], [1]]5
[[9, 5], [8], [2, 6], [3, 4], [1]]6
[[9, 5], [8], [2, 6], [3, 4], [1]]7
[[9, 5], [8], [2, 6], [3, 4], [1]]8
[[9, 5], [8], [2, 6], [3, 4], [1]]9
Các
list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
1itertools
2[[9, 5], [8], [2, 6], [3, 4], [1]]6
itertools
4[[9, 5], [8], [2, 6], [3, 4], [1]]8
itertools
6list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
1list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
75[[9, 5], [8], [2, 6], [3, 4], [1]]9
list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
77list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
1itertools
8 itertools
9import
0
list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
3 import
2import
3import
4import
5import
6__7777474797474functools
7
list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
3 import
2import
5import
4import
3import
4__7777676797474list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
06list3 = [[a, p, q],
[b, c, r, s],
[d, e, t],
[f, g, h, u, v, w] ]
07Output:
[[9, 5], [8], [2, 6], [3, 4], [1]]