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 itemspet_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 listpet_set = set(["dog", "cat", "red fish"])# Builds a set from a tuplepet_set = set(("dog", "cat", "red fish"))# Builds a set from a dictionarypet_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 stringpet_set = set("dog")# Prints the resultprint(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 setpet_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 valuespet_set = {"dog", "cat", "cat"}# Prints the resultprint(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 itemspet_list = ["dog", "cat", "red fish"] |
Bạn cũng có thể sử dụng list()hàm tạo:
# Builds a list from a setpet_list = list({"dog", "cat", "red fish"})# Builds a list from a tuplepet_list = list(("dog", "cat", "red fish"))# Builds a list from a dictionarypet_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 stringpet_list = list("dog")# Prints the resultprint(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 constructorpet_list = list()# Declares an empty list with bracketspet_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 itemspet_list = ["dog"] * 3# Prints the resultprint(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 valuespet_list = ["dog", "cat", "cat"]# Prints the resultprint(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 itemspet_set = {"dog", "cat", "red fish"}# Declares a set with integer itemspet_set = {1, 532, 165}# Declares a set with boolean itemspet_set = {True, False}# Declares a set with string, float, and boolean itemspet_set = {"parrot", 1.5, False} |
Lưu ý: Trong một tập hợp, các câu lệnh 1 == Truevà 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 typespet_set = {"dog", 1, True}# Prints the resultprint(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 itemspet_list = ["dog", "cat", "red fish"]# Declares a list with integer itemspet_list = [1, 532, 165]# Declares a list with boolean itemspet_list = [True, False, False]# Declares a list with string, float, and boolean itemspet_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 itemspet_list = ["dog", "dog", False, False, 1, 1]# Prints the resultprint(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 itemspet_set = {"dog", "cat", "red fish"}# Declares a list with itemspet_list = ["gecko", "parrot"]# Calls the update() function with the listpet_set.update(pet_list)# Prints the resultprint(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 itemspet_set = {"dog", "cat", "red fish"}# Declares a list with itemspet_list = ["dog", "gecko", "parrot"]# Loops the list and add each item to the setfor item in pet_list: pet_set.add(item)# Prints the result# Note that the "dog" duplicate value has been removed from the setprint(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 itemspet_set = {"dog", "cat", "red fish"}# Declares a list with itemspet_list = ["gecko", "parrot"]# Transforms the list into a setpet_set_2 = set(pet_list)# Performs a combination of sets using the union() functionpet_set = pet_set.union(pet_set_2)# Prints the resultprint(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 itemspet_set = {"dog", "cat", "red fish"}# Declares a list with itemspet_list = ["gecko", "parrot"]# Transform the list into a setpet_set_2 = set(pet_list)# Performs a combination of sets using the OR | operatorpet_set = pet_set | pet_set_2# Prints the resultprint(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ả.