Hướng dẫn union of multiple sets python - liên hiệp nhiều bộ python

>>> big = [[1, '34', '44'], [1, '40', '30', '41'], [1, '41', '40', '42'], [1, '42', '41', '43'], [1, '43', '42', '44'], [1, '44', '34', '43']]
>>> set(reduce ( lambda l,a : l + a, big))
set([1, '44', '30', '42', '43', '40', '41', '34'])

Và nếu bạn thực sự muốn một danh sách một danh sách là kết quả cuối cùng

>>>>[list(set(reduce ( lambda l,a : l + a, big)))]
[[1, '44', '30', '42', '43', '40', '41', '34']]

Và nếu bạn không thích mã hóa chức năng Lambda để bổ sung danh sách:

>>>>[list(set(reduce ( list.__add__, big)))]
[[1, '44', '30', '42', '43', '40', '41', '34']]

Chỉnh sửa: Sau khi bạn đề xuất về việc sử dụng itertools.chain thay vì danh sách .__ add__ Tôi đã chạy một thời gian cho cả hai với biến ban đầu được sử dụng bởi poster gốc. : after your recommendation about using itertools.chain instead of list.__add__ I ran a timeit for both with the original variable used by the original poster.

Có vẻ như danh sách thời gian thời gian .__ Thêm khoảng 2,8s và itertools.chain khoảng 3,5 giây.

Tôi đã kiểm tra trên trang này và vâng, bạn đã đúng với itertools.chain chứa một phương thức từ_iterable cung cấp một sự tăng cường hiệu suất rất lớn. Xem bên dưới với Danh sách.

>>> timeit.timeit("[list(set(reduce ( list.__add__, big)))]", setup="big = [ [10,20,30,40] for ele in range(10000)]", number=30)
16.051744650801993
>>> timeit.timeit("[list(set(reduce ( itertools.chain, big)))]", setup="big = [ [10,20,30,40] for ele in range(10000)]", number=30)
54.721315866467194
>>> timeit.timeit("list(set(itertools.chain.from_iterable(big)))", setup="big = [ [10,20,30,40] for ele in range(10000)]", number=30)
0.040056066849501804

Cảm ơn bạn rất nhiều vì lời khuyên của bạn :)

Đưa ra nhiều danh sách bộ, nhiệm vụ là viết một chương trình Python để tìm sự kết hợp của mỗi bộ.

Examples:

Đầu vào: test_list = [{4, 3, 5, 2}, {8, 4, 7, 2}, {1, 2, 3, 4}, {9, 5, 3, 7}]] test_list = [{4, 3, 5, 2}, {8, 4, 7, 2}, {1, 2, 3, 4}, {9, 5, 3, 7}]

Đầu ra: {1, 2, 3, 4, 5, 7, 8, 9} {1, 2, 3, 4, 5, 7, 8, 9}

Giải thích: Tất cả các yếu tố từ tất cả các bộ bao gồm. Sao chép loại bỏ. All elements from all sets included. Duplicates removed.

Đầu vào: test_list = [{4, 3, 5, 2}, {8, 4, 7, 2}, {1, 2, 3, 4}]] test_list = [{4, 3, 5, 2}, {8, 4, 7, 2}, {1, 2, 3, 4}]

Đầu ra: {1, 2, 3, 4, 5, 7, 8} {1, 2, 3, 4, 5, 7, 8}

Giải thích: Tất cả các yếu tố từ tất cả các bộ bao gồm. Sao chép loại bỏ. All elements from all sets included. Duplicates removed.

Đầu vào: test_list = [{4, 3, 5, 2}, {8, 4, 7, 2}, {1, 2, 3, 4}]]union() + * operator

Đầu ra: {1, 2, 3, 4, 5, 7, 8}

Python3

Phương pháp số 1: Sử dụng toán tử Union () + *

Trong đó, chúng tôi thực hiện nhiệm vụ nhận công đoàn bằng công đoàn () và * toán tử được sử dụng để thực hiện nhiệm vụ đóng gói tất cả các bộ cùng nhau.

test_list =

>>> timeit.timeit("[list(set(reduce ( list.__add__, big)))]", setup="big = [ [10,20,30,40] for ele in range(10000)]", number=30)
16.051744650801993
>>> timeit.timeit("[list(set(reduce ( itertools.chain, big)))]", setup="big = [ [10,20,30,40] for ele in range(10000)]", number=30)
54.721315866467194
>>> timeit.timeit("list(set(itertools.chain.from_iterable(big)))", setup="big = [ [10,20,30,40] for ele in range(10000)]", number=30)
0.040056066849501804
9test_list 0test_list 1 test_list 2 test_list 3test_list 4

Output:

test_list 5= test_list 7test_list 8test_list 9=0

>>> timeit.timeit("[list(set(reduce ( list.__add__, big)))]", setup="big = [ [10,20,30,40] for ele in range(10000)]", number=30)
16.051744650801993
>>> timeit.timeit("[list(set(reduce ( itertools.chain, big)))]", setup="big = [ [10,20,30,40] for ele in range(10000)]", number=30)
54.721315866467194
>>> timeit.timeit("list(set(itertools.chain.from_iterable(big)))", setup="big = [ [10,20,30,40] for ele in range(10000)]", number=30)
0.040056066849501804
9test_list 0=3 test_list 2 test_list 3=6

Danh sách ban đầu là: [{2, 3, 4, 5}, {8, 2, 4, 7}, {1, 2, 3, 4}, {9, 3, 5, 7}]]chain.from_iterable() + * operator

Đa bộ liên kết: {1, 2, 3, 4, 5, 7, 8, 9}

Python3

Phương pháp số 2: Sử dụng Trình điều khiển chuỗi.From_Iterable () + *

Phương pháp số 1: Sử dụng toán tử Union () + *

Trong đó, chúng tôi thực hiện nhiệm vụ nhận công đoàn bằng công đoàn () và * toán tử được sử dụng để thực hiện nhiệm vụ đóng gói tất cả các bộ cùng nhau.

test_list =

>>> timeit.timeit("[list(set(reduce ( list.__add__, big)))]", setup="big = [ [10,20,30,40] for ele in range(10000)]", number=30)
16.051744650801993
>>> timeit.timeit("[list(set(reduce ( itertools.chain, big)))]", setup="big = [ [10,20,30,40] for ele in range(10000)]", number=30)
54.721315866467194
>>> timeit.timeit("list(set(itertools.chain.from_iterable(big)))", setup="big = [ [10,20,30,40] for ele in range(10000)]", number=30)
0.040056066849501804
9test_list 0test_list 1 test_list 2 test_list 3test_list 4

Output:

test_list 5= test_list 7test_list 8test_list 9=0

>>> timeit.timeit("[list(set(reduce ( list.__add__, big)))]", setup="big = [ [10,20,30,40] for ele in range(10000)]", number=30)
16.051744650801993
>>> timeit.timeit("[list(set(reduce ( itertools.chain, big)))]", setup="big = [ [10,20,30,40] for ele in range(10000)]", number=30)
54.721315866467194
>>> timeit.timeit("list(set(itertools.chain.from_iterable(big)))", setup="big = [ [10,20,30,40] for ele in range(10000)]", number=30)
0.040056066849501804
9test_list 0=3 test_list 2 test_list 3=6


Làm thế nào để bạn có một liên minh gồm ba bộ trong Python?

Python Set Union () Phương thức Cú pháp:..
Cú pháp: Set1. Liên minh (set2, set3, set4.).
Tham số: số không hoặc nhiều bộ ..
Trả về: Trả về một bộ, có sự kết hợp của tất cả các bộ (SET1, SET2, SET3,) với SET1. Nó chỉ trả về một bản sao của Set1 nếu không có tham số nào được truyền ..

Làm thế nào để bạn kết hợp các bộ trong Python?

Các bộ có thể được tham gia trong Python theo một số cách khác nhau. Chẳng hạn, Update () thêm tất cả các yếu tố của một bộ khác. Tương tự, Union () kết hợp tất cả các yếu tố của hai bộ và trả lại chúng trong một bộ mới. Cả hai hoạt động của Union () và Update () đều loại trừ các yếu tố trùng lặp.union() combines all the elements of the two sets and returns them in a new set. Both union() and update() operations exclude duplicate elements.

Liên minh [] có nghĩa là gì trong Python?

Định nghĩa và sử dụng Phương thức Union () trả về một tập hợp chứa tất cả các mục từ bộ gốc và tất cả các mục từ (các) bộ được chỉ định.returns a set that contains all items from the original set, and all items from the specified set(s).

Làm thế nào để bạn tạo ra một liên minh với hai bộ?

Sự kết hợp của hai bộ là một bộ chứa tất cả các yếu tố trong A hoặc trong B (có thể cả hai).Ví dụ: {1,2} {2,3} = {1,2,3}.Do đó, chúng ta có thể viết x∈ (a∪b) khi và chỉ khi (x∈A) hoặc (x∈B).Lưu ý rằng a∪b = b∪a.x∈(A∪B) if and only if (x∈A) or (x∈B). Note that A∪B=B∪A.