Hướng dẫn are python sets unchangeable? - bộ python có thay đổi được không?

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem nó cùng với hướng dẫn bằng văn bản để làm sâu sắc thêm sự hiểu biết của bạn: Bộ trong Python This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Sets in Python

Show

Có lẽ bạn nhớ lại việc học về các bộ và đặt lý thuyết tại một số điểm trong giáo dục toán học của bạn. Có thể bạn thậm chí còn nhớ các sơ đồ Venn:sets and set theory at some point in your mathematical education. Maybe you even remember Venn diagrams:

Hướng dẫn are python sets unchangeable? - bộ python có thay đổi được không?

Nếu điều này không rung chuông, đừng lo lắng! Hướng dẫn này vẫn có thể dễ dàng truy cập cho bạn.

Trong toán học, một định nghĩa nghiêm ngặt của một bộ có thể trừu tượng và khó nắm bắt. Thực tế, một bộ có thể được coi là một bộ sưu tập các đối tượng riêng biệt được xác định rõ, thường được gọi là các yếu tố hoặc thành viên.elements or members.

Nhóm các đối tượng thành một tập hợp cũng có thể hữu ích trong việc lập trình và Python cung cấp một loại tập hợp tích hợp để làm như vậy. Các bộ được phân biệt với các loại đối tượng khác bởi các hoạt động duy nhất có thể được thực hiện trên chúng.

Ở đây, những gì bạn sẽ học được trong hướng dẫn này: Bạn sẽ thấy cách xác định các đối tượng đã đặt trong Python và khám phá các hoạt động mà chúng hỗ trợ. Như với các hướng dẫn trước đây về danh sách và từ điển, khi bạn kết thúc với hướng dẫn này, bạn nên có cảm giác tốt khi một bộ là một lựa chọn thích hợp. Bạn cũng sẽ tìm hiểu về các bộ đông lạnh, tương tự như các bộ ngoại trừ một chi tiết quan trọng. You’ll see how to define set objects in Python and discover the operations that they support. As with the earlier tutorials on lists and dictionaries, when you are finished with this tutorial, you should have a good feel for when a set is an appropriate choice. You will also learn about frozen sets, which are similar to sets except for one important detail.

Xác định một bộ

Loại

>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

2 tích hợp Python có các đặc điểm sau:

  • Bộ không được đặt hàng.
  • Đặt các yếu tố là duy nhất. Các yếu tố trùng lặp không được phép.
  • Một tập hợp có thể được sửa đổi, nhưng các yếu tố có trong tập hợp phải thuộc loại bất biến.

Hãy cùng xem tất cả những gì có nghĩa là gì và cách bạn có thể làm việc với các bộ trong Python.

Một bộ có thể được tạo theo hai cách. Đầu tiên, bạn có thể xác định một tập hợp với hàm

>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

3 tích hợp:

Trong trường hợp này, đối số

>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

4 là một bản tin có thể thay đổi, hiện tại, hãy nghĩ rằng danh sách hoặc tuple, tạo ra danh sách các đối tượng được đưa vào tập hợp. Điều này tương tự như đối số
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

4 được đưa ra cho phương thức danh sách
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

6:

>>>

>>> x = set(['foo', 'bar', 'baz', 'foo', 'qux'])
>>> x
{'qux', 'foo', 'bar', 'baz'}

>>> x = set(('foo', 'bar', 'baz', 'foo', 'qux'))
>>> x
{'qux', 'foo', 'bar', 'baz'}

Chuỗi cũng có thể lặp lại, vì vậy một chuỗi cũng có thể được chuyển đến

>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

3. Bạn đã thấy rằng
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

8 tạo ra một danh sách các ký tự trong chuỗi
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

9. Tương tự,
>>> x = set()
>>> bool(x)
False
>>> x or 1
1
>>> x and 1
set()
0 tạo ra một tập hợp các ký tự trong
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

9:

>>>

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}

Chuỗi cũng có thể lặp lại, vì vậy một chuỗi cũng có thể được chuyển đến

>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

3. Bạn đã thấy rằng
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

8 tạo ra một danh sách các ký tự trong chuỗi
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

9. Tương tự,
>>> x = set()
>>> bool(x)
False
>>> x or 1
1
>>> x and 1
set()
0 tạo ra một tập hợp các ký tự trong
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

9:

Bạn có thể thấy rằng các bộ kết quả không được đặt hàng: thứ tự ban đầu, như được chỉ định trong định nghĩa, không nhất thiết phải được bảo tồn. Ngoài ra, các giá trị trùng lặp chỉ được biểu diễn trong tập hợp một lần, như với chuỗi

>>> x = set()
>>> bool(x)
False
>>> x or 1
1
>>> x and 1
set()
2 trong hai ví dụ đầu tiên và chữ cái
>>> x = set()
>>> bool(x)
False
>>> x or 1
1
>>> x and 1
set()
3 trong lần thứ ba.

x = {<obj>, <obj>, ..., <obj>}

Thay phiên, một tập hợp có thể được xác định bằng niềng răng xoăn (

>>> x = set()
>>> bool(x)
False
>>> x or 1
1
>>> x and 1
set()
4):

Khi một tập hợp được xác định theo cách này, mỗi

>>> x = set()
>>> bool(x)
False
>>> x or 1
1
>>> x and 1
set()
5 trở thành một yếu tố riêng biệt của tập hợp, ngay cả khi nó là một điều đáng tin cậy. Hành vi này tương tự như phương thức danh sách
>>> x = set()
>>> bool(x)
False
>>> x or 1
1
>>> x and 1
set()
6.

>>>

>>> x = {'foo', 'bar', 'baz', 'foo', 'qux'}
>>> x
{'qux', 'foo', 'bar', 'baz'}

>>> x = {'q', 'u', 'u', 'x'}
>>> x
{'x', 'q', 'u'}

Chuỗi cũng có thể lặp lại, vì vậy một chuỗi cũng có thể được chuyển đến

>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

3. Bạn đã thấy rằng
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

8 tạo ra một danh sách các ký tự trong chuỗi
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

9. Tương tự,
>>> x = set()
>>> bool(x)
False
>>> x or 1
1
>>> x and 1
set()
0 tạo ra một tập hợp các ký tự trong
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

9:

  • Bạn có thể thấy rằng các bộ kết quả không được đặt hàng: thứ tự ban đầu, như được chỉ định trong định nghĩa, không nhất thiết phải được bảo tồn. Ngoài ra, các giá trị trùng lặp chỉ được biểu diễn trong tập hợp một lần, như với chuỗi
    >>> x = set()
    >>> bool(x)
    False
    >>> x or 1
    1
    >>> x and 1
    set()
    
    2 trong hai ví dụ đầu tiên và chữ cái
    >>> x = set()
    >>> bool(x)
    False
    >>> x or 1
    1
    >>> x and 1
    set()
    
    3 trong lần thứ ba.
  • Thay phiên, một tập hợp có thể được xác định bằng niềng răng xoăn (
    >>> x = set()
    >>> bool(x)
    False
    >>> x or 1
    1
    >>> x and 1
    set()
    
    4):

Khi một tập hợp được xác định theo cách này, mỗi

>>> x = set()
>>> bool(x)
False
>>> x or 1
1
>>> x and 1
set()
5 trở thành một yếu tố riêng biệt của tập hợp, ngay cả khi nó là một điều đáng tin cậy. Hành vi này tương tự như phương thức danh sách
>>> x = set()
>>> bool(x)
False
>>> x or 1
1
>>> x and 1
set()
6.

>>>

>>> {'foo'}
{'foo'}

>>> set('foo')
{'o', 'f'}

Chuỗi cũng có thể lặp lại, vì vậy một chuỗi cũng có thể được chuyển đến

>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

3. Bạn đã thấy rằng
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

8 tạo ra một danh sách các ký tự trong chuỗi
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

9. Tương tự,
>>> x = set()
>>> bool(x)
False
>>> x or 1
1
>>> x and 1
set()
0 tạo ra một tập hợp các ký tự trong
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

9:

>>>

>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

Chuỗi cũng có thể lặp lại, vì vậy một chuỗi cũng có thể được chuyển đến

>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

3. Bạn đã thấy rằng
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

8 tạo ra một danh sách các ký tự trong chuỗi
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

9. Tương tự,
>>> x = set()
>>> bool(x)
False
>>> x or 1
1
>>> x and 1
set()
0 tạo ra một tập hợp các ký tự trong
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

9:

>>>

>>> x = set()
>>> bool(x)
False
>>> x or 1
1
>>> x and 1
set()

Chuỗi cũng có thể lặp lại, vì vậy một chuỗi cũng có thể được chuyển đến

>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

3. Bạn đã thấy rằng
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

8 tạo ra một danh sách các ký tự trong chuỗi
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

9. Tương tự,
>>> x = set()
>>> bool(x)
False
>>> x or 1
1
>>> x and 1
set()
0 tạo ra một tập hợp các ký tự trong
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

9:

>>>

>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}

Chuỗi cũng có thể lặp lại, vì vậy một chuỗi cũng có thể được chuyển đến

>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

3. Bạn đã thấy rằng
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

8 tạo ra một danh sách các ký tự trong chuỗi
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

9. Tương tự,
>>> x = set()
>>> bool(x)
False
>>> x or 1
1
>>> x and 1
set()
0 tạo ra một tập hợp các ký tự trong
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

9:

>>>

>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}

Chuỗi cũng có thể lặp lại, vì vậy một chuỗi cũng có thể được chuyển đến

>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

3. Bạn đã thấy rằng
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

8 tạo ra một danh sách các ký tự trong chuỗi
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

9. Tương tự,
>>> x = set()
>>> bool(x)
False
>>> x or 1
1
>>> x and 1
set()
0 tạo ra một tập hợp các ký tự trong
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

9:

>>>

>>> x = {42, 'foo', (1, 2, 3), 3.14159}
>>> x
{42, 'foo', 3.14159, (1, 2, 3)}

Chuỗi cũng có thể lặp lại, vì vậy một chuỗi cũng có thể được chuyển đến

>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

3. Bạn đã thấy rằng
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

8 tạo ra một danh sách các ký tự trong chuỗi
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

9. Tương tự,
>>> x = set()
>>> bool(x)
False
>>> x or 1
1
>>> x and 1
set()
0 tạo ra một tập hợp các ký tự trong
>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

9:

>>>

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
0

Chuỗi cũng có thể lặp lại, vì vậy một chuỗi cũng có thể được chuyển đến >>> x = set() >>> type(x) >>> x set() >>> x = {} >>> type(x) 3. Bạn đã thấy rằng >>> x = set() >>> type(x) >>> x set() >>> x = {} >>> type(x) 8 tạo ra một danh sách các ký tự trong chuỗi >>> x = set() >>> type(x) >>> x set() >>> x = {} >>> type(x) 9. Tương tự, >>> x = set() >>> bool(x) False >>> x or 1 1 >>> x and 1 set() 0 tạo ra một tập hợp các ký tự trong >>> x = set() >>> type(x) >>> x set() >>> x = {} >>> type(x) 9:

Bạn có thể thấy rằng các bộ kết quả không được đặt hàng: thứ tự ban đầu, như được chỉ định trong định nghĩa, không nhất thiết phải được bảo tồn. Ngoài ra, các giá trị trùng lặp chỉ được biểu diễn trong tập hợp một lần, như với chuỗi

>>> x = set()
>>> bool(x)
False
>>> x or 1
1
>>> x and 1
set()
2 trong hai ví dụ đầu tiên và chữ cái
>>> x = set()
>>> bool(x)
False
>>> x or 1
1
>>> x and 1
set()
3 trong lần thứ ba.

>>>

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
1

Chuỗi cũng có thể lặp lại, vì vậy một chuỗi cũng có thể được chuyển đến >>> x = set() >>> type(x) >>> x set() >>> x = {} >>> type(x) 3. Bạn đã thấy rằng >>> x = set() >>> type(x) >>> x set() >>> x = {} >>> type(x) 8 tạo ra một danh sách các ký tự trong chuỗi >>> x = set() >>> type(x) >>> x set() >>> x = {} >>> type(x) 9. Tương tự, >>> x = set() >>> bool(x) False >>> x or 1 1 >>> x and 1 set() 0 tạo ra một tập hợp các ký tự trong >>> x = set() >>> type(x) >>> x set() >>> x = {} >>> type(x) 9:

Bạn có thể thấy rằng các bộ kết quả không được đặt hàng: thứ tự ban đầu, như được chỉ định trong định nghĩa, không nhất thiết phải được bảo tồn. Ngoài ra, các giá trị trùng lặp chỉ được biểu diễn trong tập hợp một lần, như với chuỗi

>>> x = set()
>>> bool(x)
False
>>> x or 1
1
>>> x and 1
set()
2 trong hai ví dụ đầu tiên và chữ cái
>>> x = set()
>>> bool(x)
False
>>> x or 1
1
>>> x and 1
set()
3 trong lần thứ ba.

Thay phiên, một tập hợp có thể được xác định bằng niềng răng xoăn (>>> x = set() >>> bool(x) False >>> x or 1 1 >>> x and 1 set() 4):

Khi một tập hợp được xác định theo cách này, mỗi

>>> x = set()
>>> bool(x)
False
>>> x or 1
1
>>> x and 1
set()
5 trở thành một yếu tố riêng biệt của tập hợp, ngay cả khi nó là một điều đáng tin cậy. Hành vi này tương tự như phương thức danh sách
>>> x = set()
>>> bool(x)
False
>>> x or 1
1
>>> x and 1
set()
6.

Do đó, các tập hợp được hiển thị ở trên cũng có thể được xác định như thế này:

Hãy xem xét hai bộ này:

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
2

Sự kết hợp của

>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
3 và
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
4 là
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
9.

Trong Python, Set Union có thể được thực hiện với toán tử

>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
0:

>>>

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
3

Đặt Liên minh cũng có thể được lấy bằng phương pháp

>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
1. Phương pháp được gọi trên một trong các bộ và phương pháp khác được truyền như một đối số:

>>>

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
4

Đặt Liên minh cũng có thể được lấy bằng phương pháp

>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
1. Phương pháp được gọi trên một trong các bộ và phương pháp khác được truyền như một đối số:

Cách chúng được sử dụng trong các ví dụ trên, toán tử và phương pháp hoạt động giống hệt nhau. Nhưng có một sự khác biệt tinh tế giữa chúng. Khi bạn sử dụng toán tử

>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
0, cả hai toán hạng phải được đặt. Phương pháp
>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
1, mặt khác, sẽ lấy bất kỳ sự khác biệt nào làm đối số, chuyển đổi nó thành một tập hợp, sau đó thực hiện công đoàn.

>>>

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
5

Đặt Liên minh cũng có thể được lấy bằng phương pháp

>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
1. Phương pháp được gọi trên một trong các bộ và phương pháp khác được truyền như một đối số:

Cách chúng được sử dụng trong các ví dụ trên, toán tử và phương pháp hoạt động giống hệt nhau. Nhưng có một sự khác biệt tinh tế giữa chúng. Khi bạn sử dụng toán tử >>> x = {42, 'foo', 3.14159, None} >>> x {None, 'foo', 42, 3.14159} 0, cả hai toán hạng phải được đặt. Phương pháp >>> x = {42, 'foo', 3.14159, None} >>> x {None, 'foo', 42, 3.14159} 1, mặt khác, sẽ lấy bất kỳ sự khác biệt nào làm đối số, chuyển đổi nó thành một tập hợp, sau đó thực hiện công đoàn.

Quan sát sự khác biệt giữa hai tuyên bố này:

>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
8

>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
9

Cả hai đều cố gắng tính toán liên minh của

>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
3 và tuple
>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
5. Điều này không thành công với toán tử
>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
0 nhưng thành công với phương pháp
>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
1.

Hướng dẫn are python sets unchangeable? - bộ python có thay đổi được không?
Các nhà khai thác và phương pháp có sẵn

Dưới đây là danh sách các hoạt động tập hợp có sẵn trong Python. Một số được thực hiện bởi toán tử, một số bằng phương pháp và một số bởi cả hai. Nguyên tắc được nêu ở trên thường được áp dụng: trong đó một tập hợp được mong đợi, các phương thức thường sẽ chấp nhận bất kỳ sự khác biệt nào như một đối số, nhưng các toán tử yêu cầu các bộ thực tế là toán hạng.

>>>

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
6

Đặt Liên minh cũng có thể được lấy bằng phương pháp

>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
1. Phương pháp được gọi trên một trong các bộ và phương pháp khác được truyền như một đối số:

>>>

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
7

Đặt Liên minh cũng có thể được lấy bằng phương pháp

>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
1. Phương pháp được gọi trên một trong các bộ và phương pháp khác được truyền như một đối số:

>>> x = {42, 'foo', (1, 2, 3), 3.14159}
>>> x
{42, 'foo', 3.14159, (1, 2, 3)}
4

>>> x = {42, 'foo', (1, 2, 3), 3.14159}
>>> x
{42, 'foo', 3.14159, (1, 2, 3)}
5

Cách chúng được sử dụng trong các ví dụ trên, toán tử và phương pháp hoạt động giống hệt nhau. Nhưng có một sự khác biệt tinh tế giữa chúng. Khi bạn sử dụng toán tử

>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
0, cả hai toán hạng phải được đặt. Phương pháp
>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
1, mặt khác, sẽ lấy bất kỳ sự khác biệt nào làm đối số, chuyển đổi nó thành một tập hợp, sau đó thực hiện công đoàn.

Hướng dẫn are python sets unchangeable? - bộ python có thay đổi được không?
Quan sát sự khác biệt giữa hai tuyên bố này:

Cả hai đều cố gắng tính toán liên minh của

>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
3 và tuple
>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
5. Điều này không thành công với toán tử
>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
0 nhưng thành công với phương pháp
>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
1.

>>>

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
8

Đặt Liên minh cũng có thể được lấy bằng phương pháp

>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
1. Phương pháp được gọi trên một trong các bộ và phương pháp khác được truyền như một đối số:

>>>

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
9

Đặt Liên minh cũng có thể được lấy bằng phương pháp

>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
1. Phương pháp được gọi trên một trong các bộ và phương pháp khác được truyền như một đối số:

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
00

Cách chúng được sử dụng trong các ví dụ trên, toán tử và phương pháp hoạt động giống hệt nhau. Nhưng có một sự khác biệt tinh tế giữa chúng. Khi bạn sử dụng toán tử

>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
0, cả hai toán hạng phải được đặt. Phương pháp
>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
1, mặt khác, sẽ lấy bất kỳ sự khác biệt nào làm đối số, chuyển đổi nó thành một tập hợp, sau đó thực hiện công đoàn.

Quan sát sự khác biệt giữa hai tuyên bố này:

Hướng dẫn are python sets unchangeable? - bộ python có thay đổi được không?
Cả hai đều cố gắng tính toán liên minh của
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
3 và tuple
>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
5. Điều này không thành công với toán tử
>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
0 nhưng thành công với phương pháp
>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
1.

Các nhà khai thác và phương pháp có sẵn

>>>

x = {<obj>, <obj>, ..., <obj>}
0

Đặt Liên minh cũng có thể được lấy bằng phương pháp

>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
1. Phương pháp được gọi trên một trong các bộ và phương pháp khác được truyền như một đối số:

Cách chúng được sử dụng trong các ví dụ trên, toán tử và phương pháp hoạt động giống hệt nhau. Nhưng có một sự khác biệt tinh tế giữa chúng. Khi bạn sử dụng toán tử

>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
0, cả hai toán hạng phải được đặt. Phương pháp
>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
1, mặt khác, sẽ lấy bất kỳ sự khác biệt nào làm đối số, chuyển đổi nó thành một tập hợp, sau đó thực hiện công đoàn.

>>>

x = {<obj>, <obj>, ..., <obj>}
1

Quan sát sự khác biệt giữa hai tuyên bố này:

Hướng dẫn are python sets unchangeable? - bộ python có thay đổi được không?

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
14

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
15

Cả hai đều cố gắng tính toán liên minh của

>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
3 và tuple
>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
5. Điều này không thành công với toán tử
>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
0 nhưng thành công với phương pháp
>>> x = {42, 'foo', 3.14159, None}
>>> x
{None, 'foo', 42, 3.14159}
1.

Hướng dẫn are python sets unchangeable? - bộ python có thay đổi được không?
Các nhà khai thác và phương pháp có sẵn

Dưới đây là danh sách các hoạt động tập hợp có sẵn trong Python. Một số được thực hiện bởi toán tử, một số bằng phương pháp và một số bởi cả hai. Nguyên tắc được nêu ở trên thường được áp dụng: trong đó một tập hợp được mong đợi, các phương thức thường sẽ chấp nhận bất kỳ sự khác biệt nào như một đối số, nhưng các toán tử yêu cầu các bộ thực tế là toán hạng.

>>>

x = {<obj>, <obj>, ..., <obj>}
2

Tính toán sự kết hợp của hai hoặc nhiều bộ.

>>>

x = {<obj>, <obj>, ..., <obj>}
3

Đặt Liên minh

>>> x = {42, 'foo', (1, 2, 3), 3.14159}
>>> x
{42, 'foo', 3.14159, (1, 2, 3)}
0 và
>>> x = {42, 'foo', (1, 2, 3), 3.14159}
>>> x
{42, 'foo', 3.14159, (1, 2, 3)}
1 đều trả về tập hợp tất cả các phần tử trong
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
3 hoặc
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
4:

>>>

x = {<obj>, <obj>, ..., <obj>}
4

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
23

Nhiều bộ có thể được chỉ định với toán tử hoặc phương thức:

Bộ kết quả chứa tất cả các yếu tố có mặt trong bất kỳ bộ được chỉ định nào.

>>>

x = {<obj>, <obj>, ..., <obj>}
5

Tính toán giao điểm của hai hoặc nhiều bộ.

>>>

x = {<obj>, <obj>, ..., <obj>}
6

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
31

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
32

Đặt giao lộ

>>> x = {42, 'foo', (1, 2, 3), 3.14159}
>>> x
{42, 'foo', 3.14159, (1, 2, 3)}
6 và
>>> x = {42, 'foo', (1, 2, 3), 3.14159}
>>> x
{42, 'foo', 3.14159, (1, 2, 3)}
7 Trả về tập hợp các phần tử phổ biến cho cả
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
3 và
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
4:

Bạn có thể chỉ định nhiều bộ với phương thức giao nhau và toán tử, giống như bạn có thể với SET Union:

>>>

x = {<obj>, <obj>, ..., <obj>}
7

Bộ kết quả chỉ chứa các phần tử có mặt trong tất cả các tập hợp được chỉ định.

>>>

x = {<obj>, <obj>, ..., <obj>}
8

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
01

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
44

Tính toán sự khác biệt giữa hai hoặc nhiều bộ.

Đặt sự khác biệt

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
02 và
>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
03 Trả về tập hợp tất cả các phần tử trong
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
3 nhưng không phải trong
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
4:

>>>

x = {<obj>, <obj>, ..., <obj>}
9

Một cách khác để nghĩ về điều này là

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
02 và
>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
03 Trả về tập hợp kết quả khi bất kỳ yếu tố nào trong
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
4 bị xóa hoặc trừ khỏi
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
3.

>>>

>>> x = {'foo', 'bar', 'baz', 'foo', 'qux'}
>>> x
{'qux', 'foo', 'bar', 'baz'}

>>> x = {'q', 'u', 'u', 'x'}
>>> x
{'x', 'q', 'u'}
0

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
55

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
56

Một lần nữa, bạn có thể chỉ định nhiều hơn hai bộ:

Khi nhiều bộ được chỉ định, thao tác được thực hiện từ trái sang phải. Trong ví dụ trên,

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
10 được tính toán đầu tiên, dẫn đến
>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
11. Sau đó,
>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
12 bị trừ khỏi bộ đó, để lại
>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
13:

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
55 và
>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
56 Trả về
>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
25 nếu
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
3 là một superset của
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
4:

>>>

>>> x = {'foo', 'bar', 'baz', 'foo', 'qux'}
>>> x
{'qux', 'foo', 'bar', 'baz'}

>>> x = {'q', 'u', 'u', 'x'}
>>> x
{'x', 'q', 'u'}
1

Bạn đã thấy rằng một bộ được coi là một tập hợp con của chính nó. Một tập hợp cũng được coi là một siêu âm của chính nó:

>>>

>>> x = {'foo', 'bar', 'baz', 'foo', 'qux'}
>>> x
{'qux', 'foo', 'bar', 'baz'}

>>> x = {'q', 'u', 'u', 'x'}
>>> x
{'x', 'q', 'u'}
2

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
66

Bạn đã thấy rằng một bộ được coi là một tập hợp con của chính nó. Một tập hợp cũng được coi là một siêu âm của chính nó:

Xác định xem một bộ có phải là một superset thích hợp của bộ kia hay không.

Một superset thích hợp giống như một superset, ngoại trừ các bộ có thể giống hệt nhau. Một tập hợp

>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
3 được coi là một superset thích hợp của một tập hợp khác
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
4 nếu
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
3 chứa mọi yếu tố của
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
4 và
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
3 và
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
4 không bằng nhau.

>>>

>>> x = {'foo', 'bar', 'baz', 'foo', 'qux'}
>>> x
{'qux', 'foo', 'bar', 'baz'}

>>> x = {'q', 'u', 'u', 'x'}
>>> x
{'x', 'q', 'u'}
3

Bạn đã thấy rằng một bộ được coi là một tập hợp con của chính nó. Một tập hợp cũng được coi là một siêu âm của chính nó:

>>>

>>> x = {'foo', 'bar', 'baz', 'foo', 'qux'}
>>> x
{'qux', 'foo', 'bar', 'baz'}

>>> x = {'q', 'u', 'u', 'x'}
>>> x
{'x', 'q', 'u'}
4

Bạn đã thấy rằng một bộ được coi là một tập hợp con của chính nó. Một tập hợp cũng được coi là một siêu âm của chính nó:

Xác định xem một bộ có phải là một superset thích hợp của bộ kia hay không.

Một superset thích hợp giống như một superset, ngoại trừ các bộ có thể giống hệt nhau. Một tập hợp >>> s1 = {2, 4, 6, 8, 10} >>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'} 3 được coi là một superset thích hợp của một tập hợp khác >>> s1 = {2, 4, 6, 8, 10} >>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'} 4 nếu >>> s1 = {2, 4, 6, 8, 10} >>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'} 3 chứa mọi yếu tố của >>> s1 = {2, 4, 6, 8, 10} >>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'} 4 và >>> s1 = {2, 4, 6, 8, 10} >>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'} 3 và >>> s1 = {2, 4, 6, 8, 10} >>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'} 4 không bằng nhau.

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
66 Trả về
>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
25 nếu
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
3 là một siêu nhân thích hợp của
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
4:

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
77

Một tập hợp không phải là một superset thích hợp của chính nó:

Sửa đổi một tập hợp

Mặc dù các yếu tố chứa trong một bộ phải thuộc loại bất biến, nhưng các bộ có thể được sửa đổi. Giống như các hoạt động ở trên, có sự kết hợp của các toán tử và phương pháp có thể được sử dụng để thay đổi nội dung của một bộ.

>>>

>>> x = {'foo', 'bar', 'baz', 'foo', 'qux'}
>>> x
{'qux', 'foo', 'bar', 'baz'}

>>> x = {'q', 'u', 'u', 'x'}
>>> x
{'x', 'q', 'u'}
5

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
84

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
85

Các toán tử và phương pháp chuyển nhượng tăng cường

Mỗi công đoàn, giao lộ, sự khác biệt và các toán tử khác biệt đối xứng được liệt kê ở trên có một hình thức gán tăng cường có thể được sử dụng để sửa đổi một tập hợp. Đối với mỗi, có một phương pháp tương ứng là tốt.

>>>

>>> x = {'foo', 'bar', 'baz', 'foo', 'qux'}
>>> x
{'qux', 'foo', 'bar', 'baz'}

>>> x = {'q', 'u', 'u', 'x'}
>>> x
{'x', 'q', 'u'}
6

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
91

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
92

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
78

Sửa đổi một tập hợp bởi Liên minh.

>>>

>>> x = {'foo', 'bar', 'baz', 'foo', 'qux'}
>>> x
{'qux', 'foo', 'bar', 'baz'}

>>> x = {'q', 'u', 'u', 'x'}
>>> x
{'x', 'q', 'u'}
7

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
97

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
98

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
79 và
>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
80 Thêm vào
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
3 Bất kỳ yếu tố nào trong
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
4 mà
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
3 chưa có:

Sửa đổi một tập hợp bởi giao lộ.

>>>

>>> x = {'foo', 'bar', 'baz', 'foo', 'qux'}
>>> x
{'qux', 'foo', 'bar', 'baz'}

>>> x = {'q', 'u', 'u', 'x'}
>>> x
{'x', 'q', 'u'}
8

>>> s = 'quux' >>> list(s) ['q', 'u', 'u', 'x'] >>> set(s) {'x', 'u', 'q'} 86 và >>> s = 'quux' >>> list(s) ['q', 'u', 'u', 'x'] >>> set(s) {'x', 'u', 'q'} 87 Cập nhật >>> s1 = {2, 4, 6, 8, 10} >>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'} 3, chỉ giữ lại các yếu tố được tìm thấy trong cả >>> s1 = {2, 4, 6, 8, 10} >>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'} 3 và >>> s1 = {2, 4, 6, 8, 10} >>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'} 4:

Sửa đổi một tập hợp bởi sự khác biệt.

x = {<obj>, <obj>, ..., <obj>}
04

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
93 và
>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
94 Cập nhật
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
3, loại bỏ các yếu tố được tìm thấy trong
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
4:

Sửa đổi một tập hợp bởi sự khác biệt đối xứng.

>>>

>>> x = {'foo', 'bar', 'baz', 'foo', 'qux'}
>>> x
{'qux', 'foo', 'bar', 'baz'}

>>> x = {'q', 'u', 'u', 'x'}
>>> x
{'x', 'q', 'u'}
9

x = {<obj>, <obj>, ..., <obj>}
08

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
97 và
>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
98 Cập nhật
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
3, giữ lại các yếu tố được tìm thấy trong
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
3 hoặc
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
4, nhưng không phải cả hai:

Các phương pháp khác để sửa đổi các bộ

>>>

>>> {'foo'}
{'foo'}

>>> set('foo')
{'o', 'f'}
0

x = {<obj>, <obj>, ..., <obj>}
14

>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
97 và
>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
98 Cập nhật
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
3, giữ lại các yếu tố được tìm thấy trong
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
3 hoặc
>>> s1 = {2, 4, 6, 8, 10}
>>> s2 = {'Smith', 'McArthur', 'Wilson', 'Johansson'}
4, nhưng không phải cả hai:

Các phương pháp khác để sửa đổi các bộ

>>>

>>> {'foo'}
{'foo'}

>>> set('foo')
{'o', 'f'}
1

x = {<obj>, <obj>, ..., <obj>}
20

Ngoài các toán tử tăng cường ở trên, Python hỗ trợ một số phương pháp bổ sung sửa đổi các bộ.

Thêm một phần tử vào một tập hợp.

>>>

>>> {'foo'}
{'foo'}

>>> set('foo')
{'o', 'f'}
2

x = {<obj>, <obj>, ..., <obj>}
25

x = {<obj>, <obj>, ..., <obj>}
04 Thêm
x = {<obj>, <obj>, ..., <obj>}
06, phải là một đối tượng bất biến duy nhất, vào
>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
42:

Loại bỏ một phần tử khỏi một tập hợp.

>>>

>>> {'foo'}
{'foo'}

>>> set('foo')
{'o', 'f'}
3

x = {, , ..., } 08 Xóa x = {, , ..., } 06 từ >>> s = 'quux' >>> list(s) ['q', 'u', 'u', 'x'] >>> set(s) {'x', 'u', 'q'} 42. Python tăng một ngoại lệ nếu x = {, , ..., } 06 không có trong >>> s = 'quux' >>> list(s) ['q', 'u', 'u', 'x'] >>> set(s) {'x', 'u', 'q'} 42:

x = {<obj>, <obj>, ..., <obj>}
14 cũng loại bỏ
x = {<obj>, <obj>, ..., <obj>}
06 khỏi
>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
42. Tuy nhiên, nếu
x = {<obj>, <obj>, ..., <obj>}
06 không có trong
>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
42, phương pháp này lặng lẽ không làm gì thay vì nêu ra một ngoại lệ:frozenset, which is in all respects exactly like a set, except that a frozenset is immutable. You can perform non-modifying operations on a frozenset:

>>>

>>> {'foo'}
{'foo'}

>>> set('foo')
{'o', 'f'}
4

Loại bỏ một phần tử ngẫu nhiên khỏi một tập hợp.

>>>

>>> {'foo'}
{'foo'}

>>> set('foo')
{'o', 'f'}
5

x = {<obj>, <obj>, ..., <obj>}
20 loại bỏ và trả về một phần tử được chọn tùy ý từ
>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
42. Nếu
>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
42 trống,
x = {<obj>, <obj>, ..., <obj>}
20 sẽ tăng một ngoại lệ:

Xóa một bộ.

>>>

>>> {'foo'}
{'foo'}

>>> set('foo')
{'o', 'f'}
6

x = {<obj>, <obj>, ..., <obj>}
25 loại bỏ tất cả các yếu tố khỏi
>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
42:

Bộ đông lạnh

Python cung cấp một loại tích hợp khác gọi là Frozenset, trong tất cả các khía cạnh giống hệt như một bộ, ngoại trừ việc Frozenset là bất biến. Bạn có thể thực hiện các hoạt động không biến đổi trên Frozenset:

>>>

>>> {'foo'}
{'foo'}

>>> set('foo')
{'o', 'f'}
7

Nhưng các phương pháp cố gắng sửa đổi Frozenset Fail:

Sâu

Vì một chiếc Frozenset là bất biến, bạn có thể nghĩ rằng nó có thể là mục tiêu của một nhà điều hành phân công tăng cường. Nhưng quan sát:

>>>

>>> {'foo'}
{'foo'}

>>> set('foo')
{'o', 'f'}
8

Đưa cái gì?

>>>

Python không thực hiện các bài tập tăng cường trên các hình đông lạnh tại chỗ. Tuyên bố
x = {<obj>, <obj>, ..., <obj>}
28 có hiệu quả tương đương với
x = {<obj>, <obj>, ..., <obj>}
29. Nó không phải là sửa đổi
>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
42 ban đầu. Nó được chỉ định lại
>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
42 cho một đối tượng mới và đối tượng
>>> s = 'quux'

>>> list(s)
['q', 'u', 'u', 'x']
>>> set(s)
{'x', 'u', 'q'}
42 ban đầu được tham chiếu đã biến mất.

Bạn có thể xác minh điều này với chức năng

x = {<obj>, <obj>, ..., <obj>}
33:

>>>

>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

0

x = {<obj>, <obj>, ..., <obj>}
34 có một định danh số nguyên khác nhau theo nhiệm vụ tăng cường. Nó đã được chỉ định lại, không được sửa đổi tại chỗ.

>>>

>>> x = set()
>>> type(x)

>>> x
set()

>>> x = {}
>>> type(x)

1

Sự kết luận

Trong hướng dẫn này, bạn đã học cách xác định các đối tượng đã đặt trong Python và bạn đã làm quen với các chức năng, toán tử và phương pháp có thể được sử dụng để làm việc với các bộ.set objects in Python, and you became familiar with the functions, operators, and methods that can be used to work with sets.

Bây giờ bạn nên thoải mái với các loại dữ liệu tích hợp cơ bản mà Python cung cấp.

Tiếp theo, bạn sẽ bắt đầu khám phá cách mã hoạt động trên các đối tượng đó được tổ chức và cấu trúc trong chương trình Python.

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự.Xem nó cùng với hướng dẫn bằng văn bản để làm sâu sắc thêm sự hiểu biết của bạn: Bộ trong Python This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Sets in Python