Đặt các đối tượng Python giao nhau

Tập hợp là tập hợp có thể thay đổi của các đối tượng có thể băm riêng biệt, giống như danh sách và bộ. Nó là một tập hợp các đối tượng không có thứ tự, nghĩa là nó không ghi lại vị trí phần tử hoặc thứ tự chèn và do đó không thể truy cập các phần tử bằng chỉ mục

Tập hợp này là một triển khai Python của tập hợp trong Toán học. Một đối tượng tập hợp có các phương thức phù hợp để thực hiện các phép toán tập hợp toán học như hợp, giao, hiệu, v.v.

Một đối tượng tập hợp chứa một hoặc nhiều mục, không nhất thiết phải cùng loại, được phân tách bằng dấu phẩy và đặt trong dấu ngoặc nhọn {}. Sau đây xác định một đối tượng thiết lập với các số chẵn

Thí dụ. Python đặt đối tượng

even_nums = {2, 4, 6, 8, 10} # set of even numbers
emp = {1, 'Steve', 10.5, True} # set of different objects

Một bộ không lưu trữ các đối tượng trùng lặp. Ngay cả khi một đối tượng được thêm vào nhiều lần bên trong dấu ngoặc nhọn, thì chỉ một bản sao được giữ trong đối tượng đã đặt. Do đó, các hoạt động lập chỉ mục và cắt không thể được thực hiện trên một đối tượng đã đặt

Thí dụ. Tập hợp các yếu tố riêng biệt

>>> nums = {1, 2, 2, 3, 4, 4, 5, 5}
>>> nums
{1, 2, 3, 4, 5}

Thứ tự của các phần tử trong tập hợp không nhất thiết phải giống với thứ tự được đưa ra tại thời điểm gán. Python tối ưu hóa cấu trúc của một tập hợp để thực hiện các phép toán trên nó, như được định nghĩa trong toán học

Chỉ các đối tượng bất biến [và có thể băm] mới có thể là một phần của đối tượng đã đặt. Các số [số nguyên, số float, cũng như số phức], chuỗi và các đối tượng tuple được chấp nhận, nhưng các đối tượng set, list và dictionary thì không

Thí dụ. Đặt phần tử

>>> myset = {[10,10], 10, 20} # valid
>>> myset
{10, 20, [10, 10]}
>>> myset = {[10, 10], 10, 20}  # can't add a list
Traceback [most recent call last]:
  File "", line 1, in 
    myset = {[10, 10], 10, 20}
TypeError: unhashable type: 'list'
>>> myset = { {10, 10}, 10, 20} # can't add a set
Traceback [most recent call last]:
  File "", line 1, in 
    myset = { {10, 10}, 10, 20}
TypeError: unhashable type: 'set'

Trong ví dụ trên,

>>> nums = {1, 2, 2, 3, 4, 4, 5, 5}
>>> nums
{1, 2, 3, 4, 5}
4 là một bộ, do đó nó trở thành một phần của tập hợp. Tuy nhiên,
>>> nums = {1, 2, 2, 3, 4, 4, 5, 5}
>>> nums
{1, 2, 3, 4, 5}
5 là một danh sách, do đó một thông báo lỗi hiển thị nói rằng danh sách này không thể băm được. [Băm là một cơ chế trong khoa học máy tính cho phép tìm kiếm nhanh hơn các đối tượng trong bộ nhớ của máy tính. ]

Mặc dù các đối tượng có thể thay đổi không được lưu trữ trong một tập hợp, nhưng chính tập hợp đó là một đối tượng có thể thay đổi

Sử dụng hàm set[] để tạo một tập rỗng. Dấu ngoặc nhọn rỗng sẽ tạo một từ điển trống thay vì một tập hợp trống

Thí dụ. Tạo một tập rỗng

>>> emp = {} # creates an empty dictionary
>>> type[emp]

>>> s = set[] # creates an empty set
>>> type[s]

Hàm set[] cũng được sử dụng để chuyển đổi đối tượng chuỗi, bộ dữ liệu hoặc từ điển thành đối tượng đã đặt, như minh họa bên dưới

Thí dụ. Chuyển đổi Sequence thành Set

>>> s = set['Hello'] # converts string to set
>>> s
{'l', 'H', 'o', 'e'}
>>> s = set[[1,2,3,4,5]] # converts tuple to set
>>> s
{1, 2, 3, 4, 5}
>>> d = {1:'One', 2: 'Two'} 
>>> s = set[d] # converts dict to set
>>> s
{1, 2}

Sửa đổi phần tử tập hợp

Sử dụng các hàm set tích hợp add[], remove[] hoặc update[] để sửa đổi set collection

Thí dụ

>>> s = set[] # creates an empty set
>>> s.add[10] # add an element
>>> s.add[20]
>>> s.add[30]
>>> s
{10, 20, 30}
>>> primeNums = {2, 3, 5, 7}
>>> s.update[primeNums] # update set with another set
>>> s
{2, 3, 20, 5, 7, 10, 30}
>>> s.remove[2] # remove an element
>>> s
{3, 20, 5, 7, 10, 30}

Đặt hoạt động

Như đã đề cập trước đó, kiểu dữ liệu tập hợp trong Python triển khai như tập hợp được định nghĩa trong toán học. Có thể thực hiện nhiều hoạt động thiết lập khác nhau. nhà điều hành. , &, - và ^ lần lượt thực hiện các phép toán hợp, giao, hiệu và hiệu đối xứng. Mỗi toán tử này có một phương thức tương ứng được liên kết với lớp tập hợp dựng sẵn

OperationExampleUnion. Trả về một tập hợp mới với các phần tử từ cả hai tập hợp.

Toán tử. .
Phương thức. bộ. công đoàn[]

>>> s1={1,2,3,4,5}
>>> s2={4,5,6,7,8}
>>> s1|s2         
{1, 2, 3, 4, 5, 6, 7, 8}
>>> s1={1,2,3,4,5}
>>> s2={4,5,6,7,8}
>>> s1.union[s2]  
{1, 2, 3, 4, 5, 6, 7, 8}   
>>> s2.union[s1]  
{1, 2, 3, 4, 5, 6, 7, 8}
Giao lộ. Trả về một tập hợp mới chứa các phần tử chung cho cả hai tập hợp.

Toán tử. &
Phương pháp. bộ. giao lộ[]
>>> nums = {1, 2, 2, 3, 4, 4, 5, 5}
>>> nums
{1, 2, 3, 4, 5}
0
>>> nums = {1, 2, 2, 3, 4, 4, 5, 5}
>>> nums
{1, 2, 3, 4, 5}
1Sự khác biệt. Trả về một tập hợp chỉ chứa các phần tử trong tập hợp đầu tiên, nhưng không có trong tập hợp thứ hai.

Toán tử. -
Phương thức. bộ. khác biệt[]
>>> nums = {1, 2, 2, 3, 4, 4, 5, 5}
>>> nums
{1, 2, 3, 4, 5}
0
>>> nums = {1, 2, 2, 3, 4, 4, 5, 5}
>>> nums
{1, 2, 3, 4, 5}
1Sự khác biệt đối xứng. Trả về một tập hợp bao gồm các phần tử trong cả hai tập hợp, không bao gồm các phần tử chung.

Toán tử. ^
Phương thức. bộ. symmetric_difference[]
>>> nums = {1, 2, 2, 3, 4, 4, 5, 5}
>>> nums
{1, 2, 3, 4, 5}
2
>>> nums = {1, 2, 2, 3, 4, 4, 5, 5}
>>> nums
{1, 2, 3, 4, 5}
3

Đặt phương thức

Bảng sau liệt kê các phương thức set tích hợp

MethodDescriptionset. add[]Thêm một phần tử vào tập hợp. Nếu một phần tử đã tồn tại trong tập hợp, thì nó không thêm phần tử đó. bộ. clear[] Loại bỏ tất cả các phần tử khỏi tập hợp. bộ. copy[] Trả về một bản sao nông của tập hợp. bộ. khác biệt [] Trả về tập hợp mới với các phần tử duy nhất không có trong tập hợp khác được truyền dưới dạng tham số. bộ. Difference_update[] Cập nhật tập hợp mà phương thức được gọi với các phần tử phổ biến trong tập hợp khác được truyền dưới dạng đối số. bộ. discard[] Xóa một phần tử cụ thể khỏi tập hợp. bộ. giao điểm [] Trả về một tập hợp mới với các phần tử phổ biến trong các tập hợp đã cho. bộ. giao điểm_update[] Cập nhật tập hợp mà phương thức instersection_update[] được gọi, với các phần tử chung giữa các tập hợp đã chỉ định. bộ. isdisjoint[] Trả về true nếu các tập hợp đã cho không có phần tử chung. Các tập hợp là rời nhau khi và chỉ khi giao của chúng là tập hợp rỗng. bộ. issubset[] Trả về true nếu tập hợp [trên đó issubset[] được gọi] chứa mọi phần tử của tập hợp khác được truyền dưới dạng đối số. bộ. pop[] Loại bỏ và trả về một phần tử ngẫu nhiên từ tập hợp. bộ. remove[] Xóa phần tử đã chỉ định khỏi tập hợp. Nếu không tìm thấy phần tử được chỉ định, hãy đưa ra lỗi. bộ. symmetric_difference[] Trả về một tập hợp mới với các phần tử riêng biệt được tìm thấy trong cả hai tập hợp. bộ. symmetric_difference_update[] Cập nhật tập hợp mà phương thức instersection_update[] gọi, với các phần tử phổ biến giữa các tập hợp đã chỉ định. bộ. union[] Trả về một tập hợp mới với các phần tử riêng biệt từ tất cả các tập hợp đã cho. bộ. update[] Cập nhật tập hợp bằng cách thêm các phần tử riêng biệt từ một hoặc nhiều lần lặp đã qua

Giao lộ được đặt trong Python là gì?

Python Đặt giao điểm [] . Nghĩa. Bộ được trả về chỉ chứa các mục tồn tại trong cả hai bộ hoặc trong tất cả các bộ nếu so sánh được thực hiện với nhiều hơn hai bộ. returns a set that contains the similarity between two or more sets. Meaning: The returned set contains only items that exist in both sets, or in all sets if the comparison is done with more than two sets.

Bộ [] trong Python là gì?

set[] được dùng để chuyển đổi bất kỳ phần tử có thể lặp nào thành chuỗi các phần tử có thể lặp với các phần tử riêng biệt , thường được gọi là Set. Thông số. Bất kỳ chuỗi có thể lặp lại nào như danh sách, bộ dữ liệu hoặc từ điển. trả lại. Tập rỗng nếu không có phần tử nào được truyền.

Độ phức tạp thời gian của giao điểm đặt Python là gì?

Độ phức tạp về thời gian của giao điểm tập hợp trong Python trên tập hợp có n phần tử và đối số tập hợp có m phần tử là O[min[n, m]] because you need to check for the smaller set whether each of its elements is a member of the larger set.

Chủ Đề