Thêm một danh sách vào một tập hợp trong Python: 5 điều bạn phải biết
04/01/2023 01:19
Set Python là gì? Danh sách trong Python là gì? Bài viết này sẽ cung cấp tổng quan về hai cấu trúc dữ liệu này và chỉ ra cách thêm các giá trị danh sách vào một tập hợp trong Python.
Để giải thích sự khác biệt giữa tập hợp và danh sách trong Python – và để giúp bạn hiểu cách thêm danh sách vào tập hợp một cách chính xác – hãy bắt đầu với một ví dụ về các cấu trúc dữ liệu này. Nhìn vào hai dòng mã dưới đây:
pets = [ "dog" , "cat" , "red fish" ] pets = { "dog" , "cat" , "red fish" } pets = ( "dog" , "cat" , "red fish" ) |
Bạn đã bao giờ nhìn thấy những cấu trúc dữ liệu Python này chưa? Cái đầu tiên là một DANH SÁCH , cái thứ hai là một TẬP HỢP và cái cuối cùng là một BỘ . Tất cả được sử dụng để lưu trữ các bộ sưu tập dữ liệu. Nhưng tập hợp khác với danh sách hoặc bộ dữ liệu như thế nào?
Những điều bạn phải biết trước khi thêm danh sách vào tập hợp trong Python
1. Sự khác biệt giữa Bộ Python và Danh sách là gì?
Cấu trúc dữ liệu trong Python được sử dụng để sắp xếp, quản lý và lưu trữ dữ liệu một cách hiệu quả. Python có bốn cấu trúc dữ liệu dựng sẵn: danh sách , bộ , bộ và từ điển . Cấu trúc dữ liệu chứa các mục (hoặc phần tử) có giá trị. Dưới đây là bảng tóm tắt một số đặc điểm chung của cấu trúc dữ liệu trong Python:
Cấu trúc dữ liệu | đặt hàng | có thể thay đổi | Cho phép trùng lặp |
---|---|---|---|
Danh sách | Đúng | Đúng | Đúng |
Bộ | Không | Không | Không |
Tuple | Đúng | Không | Đúng |
Từ điển | Có, kể từ Python 3.7 | Đúng | Khóa: Không Giá trị: Có |
- Các mục trong bộ không có thứ tự , nghĩa là các mục không có vị trí cố định trong bộ và thứ tự của chúng có thể thay đổi mỗi khi bạn sử dụng. Danh sách các mục được sắp xếp theo thứ tự : vị trí của từng mục luôn giống nhau.
- Các mục của tập hợp là bất biến , có nghĩa là bạn không thể sửa đổi các giá trị của mục sau khi tập hợp được tạo. Tuy nhiên, bạn có thể xóa các mục hiện có hoặc thêm các mục mới vào tập hợp. Các mục danh sách có thể thay đổi , nghĩa là bạn có thể thay đổi giá trị mục.
- Các bộ không cho phép trùng lặp : mỗi mục trong bộ là duy nhất. Danh sách cho phép trùng lặp ; cùng một giá trị có thể xuất hiện nhiều lần trong cùng một danh sách.
- Chúng tôi sẽ không tập trung vào bộ dữ liệu và từ điển ở đây, nhưng đủ để nói rằng bộ lưu trữ danh sách có thứ tự, có thể thay đổi của các mục không phải là duy nhất và từ điển lưu trữ các cặp khóa-giá trị duy nhất có thứ tự, có thể thay đổi (ví dụ: "
eyes
": "green
" là một khóa -giá trị, trong đó khóa là "eyes
" và giá trị là "green
").
2. Khi nào sử dụng từng cấu trúc dữ liệu
Trong Python, không có cấu trúc dữ liệu nào tốt hơn cấu trúc dữ liệu nào; mỗi cấu trúc dữ liệu có các thuộc tính khác nhau và do đó, cách sử dụng khác nhau. Bạn nên chọn cấu trúc dữ liệu chính xác theo những gì bạn sẽ làm. Dưới đây là một số ví dụ thực tế về việc chọn đúng cấu trúc dữ liệu:
- Nếu bạn muốn xóa các bản sao khỏi bộ sưu tập dữ liệu khổng lồ, hãy sử dụng một tập hợp .
- Nếu bạn muốn lưu trữ tất cả các giá trị của bộ sưu tập theo cách có thứ tự, hãy sử dụng danh sách .
- Nếu bạn muốn lưu trữ tất cả các giá trị của bộ sưu tập theo cách có thứ tự và bạn biết rằng chúng sẽ không bao giờ thay đổi, hãy sử dụng tuple . Nó sẽ hiệu quả hơn về mặt bộ nhớ.
- Nếu bạn muốn quản lý các mục được liên kết với một giá trị duy nhất (khóa), hãy sử dụng từ điển .
3. Cách khai báo Set và List trong Python
Khai báo một tập hợp
Có nhiều cách để khai báo một tập hợp trong Python. Một là bao quanh các giá trị bằng dấu ngoặc nhọn:
# Declares a set with items pet_set = { "dog" , "cat" , "red fish" } |
Bạn cũng có thể sử dụng set()
hàm tạo, cho phép bạn tạo một tập hợp từ một cấu trúc dữ liệu khác (ví dụ: danh sách, bộ hoặc từ điển). Lưu ý các loại dấu ngoặc khác nhau được sử dụng để chỉ ra cấu trúc dữ liệu nào chúng tôi đang chuyển đổi thành một tập hợp:
# Builds a set from a list pet_set = set ([ "dog" , "cat" , "red fish" ]) # Builds a set from a tuple pet_set = set (( "dog" , "cat" , "red fish" )) # Builds a set from a dictionary pet_set = set ({ "dog" : "Rex" , "cat" : "Mitchi" , "red fish" : "Bubble" }) |
Lưu ý rằng bạn có thể sử dụng hàm thiết lập set với bất kỳ đối tượng có thể lặp lại nào , nghĩa là một đối tượng có khả năng trả về từng thành viên của nó. Nếu thử với một chuỗi, chúng ta sẽ thu được kết quả như sau:
# Builds a set from a string pet_set = set ( "dog" ) # Prints the result print (pet_set) # Shows: {"d", "o", "g"} |
Nếu bạn muốn khai báo một tập hợp rỗng, hãy sử dụng hàm set()
tạo không chứa bất kỳ thứ gì trong dấu ngoặc tròn. Không sử dụng dấu ngoặc nhọn trống; điều đó sẽ làm cho nó trở thành một tuyên bố từ điển.
# Declares an empty set pet_set = set () # Warning: This is an empty dictionary! pet_dict = {} |
Hãy nhớ rằng các bộ không cho phép các giá trị trùng lặp; nếu bạn khai báo một tập hợp có các giá trị trùng lặp, thì tập hợp đó sẽ xóa các giá trị trùng lặp:
# Builds a set with duplicate values pet_set = { "dog" , "cat" , "cat" } # Prints the result print (pet_set) # Shows: {"dog", "cat"} |
Khai báo một danh sách
Khai báo một danh sách trong Python khá giống nhau – chỉ cần sử dụng dấu ngoặc vuông bao quanh các giá trị:
# Declares an list with items pet_list = [ "dog" , "cat" , "red fish" ] |
Bạn cũng có thể sử dụng list()
hàm tạo:
# Builds a list from a set pet_list = list ({ "dog" , "cat" , "red fish" }) # Builds a list from a tuple pet_list = list (( "dog" , "cat" , "red fish" )) # Builds a list from a dictionary pet_list = list ({ "dog" : "Rex" , "cat" : "Mitchi" , "red fish" : "Bubble" }) |
Bạn có thể sử dụng hàm list()
tạo với bất kỳ đối tượng có thể lặp lại nào. Nếu chúng ta sử dụng nó với một chuỗi, chúng ta sẽ thu được kết quả như sau:
# Builds a list from a string pet_list = list ( "dog" ) # Prints the result print (pet_set) # Shows: ["d", "o", "g"] |
Nếu bạn muốn khai báo một danh sách rỗng, bạn sử dụng hàm tạo rỗng list()
hoặc sử dụng dấu ngoặc vuông không có giá trị.
# Declares an empty list with constructor pet_list = list () # Declares an empty list with brackets pet_list = [] |
Bạn cũng có thể khai báo và khởi tạo danh sách theo cách rất hay bằng phương pháp nhân:
# Declares a list with items pet_list = [ "dog" ] * 3 # Prints the result print (pet_list) # Shows: ["dog", "dog", "dog"] |
Hãy nhớ rằng danh sách có khả năng lưu trữ các giá trị trùng lặp:
# Builds a list with duplicate values pet_list = [ "dog" , "cat" , "cat" ] # Prints the result print (pet_list) # Shows: ["dog", "cat", "cat"] |
4. Tôi có thể sử dụng loại dữ liệu nào trong Tập hợp và Danh sách?
Các cấu trúc dữ liệu dựng sẵn của Python chấp nhận bất kỳ kiểu dữ liệu dựng sẵn nào , chẳng hạn như chuỗi, số nguyên hoặc boolean. Có thể xây dựng các tập hợp và danh sách được tạo thành từ một hoặc nhiều loại dữ liệu.
Dưới đây là một số ví dụ về tập hợp sử dụng các loại dữ liệu khác nhau:
# Declares a set with string items pet_set = { "dog" , "cat" , "red fish" } # Declares a set with integer items pet_set = { 1 , 532 , 165 } # Declares a set with boolean items pet_set = { True , False } # Declares a set with string, float, and boolean items pet_set = { "parrot" , 1.5 , False } |
Lưu ý: Trong một tập hợp, các câu lệnh 1 == True
và 0 == False
đều đúng. Vì vậy, nếu bạn có cả hai giá trị trong một tập hợp, thì tập hợp đó sẽ coi chúng là các giá trị trùng lặp và chỉ giữ lại một giá trị.
# Declares a set with duplicate values of different types pet_set = { "dog" , 1 , True } # Prints the result print (pet_set) # Shows: [1, "dog"] |
Dưới đây là một số ví dụ về danh sách sử dụng nhiều loại dữ liệu:
# Declares a list with string items pet_list = [ "dog" , "cat" , "red fish" ] # Declares a list with integer items pet_list = [ 1 , 532 , 165 ] # Declares a list with boolean items pet_list = [ True , False , False ] # Declares a list with string, float, and boolean items pet_list = [ "parrot" , 1.5 , False ] |
Hãy nhớ rằng, không giống như tập hợp, danh sách cho phép các giá trị trùng lặp, kể cả những giá trị có nhiều loại dữ liệu.
# Declares a list with duplicated items pet_list = [ "dog" , "dog" , False , False , 1 , 1 ] # Prints the result print (pet_list) # Shows: ["dog", "dog", False, False, 1, 1] |
Vì vậy, làm cách nào tôi có thể thêm giá trị danh sách vào một tập hợp trong Python?
Bây giờ chúng ta đã hiểu tập hợp và danh sách trong Python, chúng ta có thể trả lời câu hỏi trong tiêu đề của bài viết này: Làm cách nào để thêm giá trị danh sách vào tập hợp? Có một số cách giải quyết để đạt được nó.
Sử dụng set.update()
Cấu trúc dữ liệu tập hợp cung cấp một số chức năng tích hợp sẵn. Một trong số đó là update()
chức năng. Chức năng này có thể được sử dụng với bất kỳ đối tượng có thể lặp lại nào; do đó, nó sẽ hoạt động với một danh sách:
# Declares a set with items pet_set = { "dog" , "cat" , "red fish" } # Declares a list with items pet_list = [ "gecko" , "parrot" ] # Calls the update() function with the list pet_set.update(pet_list) # Prints the result print (pet_set) # Shows: {'dog', 'parrot', 'cat', 'gecko', 'red fish'} |
Sử dụng set.add()
Một chức năng tích hợp khác được cung cấp bởi cấu trúc dữ liệu đã thiết lập là add()
chức năng. Như bạn có thể đoán, nó cho phép chúng ta thêm một hoặc nhiều mục vào một tập hợp. Để thêm tất cả các giá trị của danh sách vào một tập hợp, chúng ta nên lặp lại danh sách và thêm từng mục.
# Declares a set with items pet_set = { "dog" , "cat" , "red fish" } # Declares a list with items pet_list = [ "dog" , "gecko" , "parrot" ] # Loops the list and add each item to the set for item in pet_list: pet_set.add(item) # Prints the result # Note that the "dog" duplicate value has been removed from the set print (pet_set) # Shows: {'dog', 'parrot', 'cat', 'gecko', 'red fish'} |
Sử dụng set.union()
Hàm union()
dựng sẵn kết hợp các phần tử của hai tập hợp. Vì vậy, để thêm các giá trị danh sách vào một tập hợp, trước tiên chúng ta cần chuyển đổi danh sách thành một tập hợp và sau đó sử dụng union()
:
# Declares a set with items pet_set = { "dog" , "cat" , "red fish" } # Declares a list with items pet_list = [ "gecko" , "parrot" ] # Transforms the list into a set pet_set_2 = set (pet_list) # Performs a combination of sets using the union() function pet_set = pet_set.union(pet_set_2) # Prints the result print (pet_set) # Shows: {'dog', 'parrot', 'cat', 'gecko', 'red fish'} |
Sử dụng OR | nhà điều hành
Theo TÀI LIỆU của Python , một giải pháp thay thế tao nhã cho union()
hàm là sử dụng toán tử OR | nối hai tập hợp:
# Declares a set with items pet_set = { "dog" , "cat" , "red fish" } # Declares a list with items pet_list = [ "gecko" , "parrot" ] # Transform the list into a set pet_set_2 = set (pet_list) # Performs a combination of sets using the OR | operator pet_set = pet_set | pet_set_2 # Prints the result print (pet_set) # Shows: {'dog', 'parrot', 'cat', 'gecko', 'red fish'} |
Lưu ý rằng bạn có thể sử dụng toán tử |= ngắn hơn để làm điều tương tự:
pet_set | = set (pet_list) |
Như bạn có thể đã hình dung ra, hai tùy chọn này hoạt động hoàn toàn giống như cách sử dụng union()
và cho ra cùng một kết quả.