PHP
Python

Trang chủ

Các cách copy set trong Python

Ngôn ngữ Python là một ngôn ngữ lập trình đa mục đích, nổi tiếng với cú pháp dễ đọc, dễ học và tính ứng dụng cao. Trong lĩnh vực phát triển web, Python thường được sử dụng thông qua các framework như Django và Flask để xây dựng các ứng dụng web mạnh mẽ, bảo mật và dễ mở rộng. Trong chuyên mục này, Vietnix không chỉ cung cấp kiến thức nền tảng về ngôn ngữ Python mà còn hướng dẫn chi tiết cách xây dựng các ứng dụng web thực tế, sử dụng các framework phổ biến và áp dụng các kỹ thuật tiên tiến. Vietnix cam kết liên tục cập nhật những bài viết mới nhất về các tính năng mới của Python, các thư viện hỗ trợ hữu ích và những phương pháp tốt nhất, giúp bạn khai thác tối đa sức mạnh của Python và hoàn thiện kỹ năng lập trình web của mình.
html
CSS
javascript
sql
python
php
c
c++
bootstrap
react
mysql
reactjs
vuejs
Javascript Tutorials
25/02/2025
10 phút đọc
Theo dõi Vietnix trên

Các cách copy set trong Python

Việc copy set trong Python là một thao tác quan trọng khi bạn muốn thực hiện các thay đổi trên bản sao mà không ảnh hưởng đến set gốc. Có nhiều cách để thực hiện việc này, từ việc sử dụng phương thức copy() đến việc sử dụng hàm set() hoặc set comprehension. Để tìm hiểu chi tiết về từng phương pháp và cách ứng dụng chúng trong thực tế, mời bạn đọc theo dõi nội dung chi tiết của bài viết.

Các điểm chính

Đọc xong bài viết, bạn sẽ:

  • Hiểu rõ khái niệm copy set trong Python: Bài viết sẽ giúp bạn nắm bắt bản chất của việc sao chép một set, phân biệt giữa copy (tạo bản sao) và”gán (chỉ tham chiếu đến cùng một set).
  • Nắm vững 3 phương pháp copy set trong Python: Bạn sẽ biết cách sử dụng copy(), set() và set comprehension để tạo bản sao của một set một cách chính xác.
  • Áp dụng thành thạo các phương pháp copy set: Thông qua ví dụ minh họa cụ thể, bạn sẽ có thể áp dụng kiến thức đã học vào các bài toán lập trình thực tế.
  • Phân biệt được ưu điểm và nhược điểm của từng phương pháp copy set: Bạn sẽ biết khi nào nên sử dụng phương pháp nào để đạt hiệu quả cao nhất.
  • Biết được Vietnix – Nhà cung cấp dịch vụ VPS với công nghệ và hạ tầng hiện đại.

Copy set trong Python

Copy set trong Python là việc tạo ra một set mới chứa các phần tử giống hệt như set ban đầu. Khác với phép gán biến thông thường (chỉ tạo một tham chiếu đến set gốc), việc copy đảm bảo rằng những thay đổi thực hiện trên set đã copy sẽ không ảnh hưởng đến set gốc và ngược lại.

Copy set trong Python là việc tạo ra một set mới chứa các phần tử giống hệt như set ban đầu
Copy set trong Python là việc tạo ra một set mới chứa các phần tử giống hệt như set ban đầu

Có nhiều cách khác nhau để copy set trong Python, bao gồm sử dụng phương thức copy(), hàm set(), hoặc set comprehension. Chúng ta sẽ tìm hiểu từng cách một ngay sau đây.

Copy set trong Python với phương thức copy()

Phương thức copy() trong lớp set được sử dụng để tạo một bản sao shallow copy của một đối tượng set. Shallow copy nghĩa là phương thức này tạo ra một đối tượng set mới, nhưng không tạo ra các bản sao của các đối tượng bên trong set gốc. Thay vào đó, copy set trong Python sao chép các tham chiếu đến những đối tượng này.

Do đó, nếu set gốc chứa các đối tượng có thể thay đổi được, việc thay đổi những đối tượng này sẽ được phản ánh trong cả set gốc và set đã sao chép.

Cú pháp

Dưới đây là cú pháp của phương thức copy():

set.copy()

Phương thức copy() trả về một set mới, là một bản sao shallow copy của set hiện có.

Ví dụ

Trong ví dụ sau, chúng ta sẽ tạo một bản sao của set “lang1” và lưu trữ bản sao đó trong “lang2”, sau đó lấy ra cả hai set và địa chỉ bộ nhớ của từng set bằng id().

Sau khi thêm một phần tử vào “lang1”, chúng ta lại lấy cả hai set và địa chỉ bộ nhớ tương ứng, để cho thấy “lang1” và “lang2” là các bản sao độc lập:

lang1 = {"C", "C++", "Java", "Python"}
print ("lang1: ", lang1, "id(lang1): ", id(lang1))

lang2 = lang1.copy()  # Tạo bản sao
print ("lang2: ", lang2, "id(lang2): ", id(lang2))

lang1.add("PHP")  # Thay đổi set gốc

print ("Sau khi cập nhật lang1")
print ("lang1: ", lang1, "id(lang1): ", id(lang1))
print ("lang2: ", lang2, "id(lang2): ", id(lang2))

Chạy đoạn mã trên, kết quả sẽ tương tự như sau:

lang1: {‘C’, ‘Python’, ‘Java’, ‘C++’} id(lang1): 140719836546688
lang2: {‘C’, ‘Python’, ‘Java’, ‘C++’} id(lang2): 140719836547136
Sau khi cập nhật lang1
lang1: {‘C’, ‘Python’, ‘Java’, ‘C++’, ‘PHP’} id(lang1): 140719836546688
lang2: {‘C’, ‘Python’, ‘Java’, ‘C++’} id(lang2): 140719836547136

Giải thích:

  • lang1 = {"C", "C++", "Java", "Python"}: Khởi tạo một set tên là lang1 chứa các chuỗi ngôn ngữ lập trình.
  • print ("lang1: ", lang1, "id(lang1): ", id(lang1)): In ra nội dung của lang1 và địa chỉ bộ nhớ của nó.
  • lang2 = lang1.copy(): Tạo một bản sao “shallow copy” của lang1 và gán cho biến lang2.
  • print ("lang2: ", lang2, "id(lang2): ", id(lang2)): In ra nội dung của lang2 và địa chỉ bộ nhớ. Bạn sẽ thấy nội dung giống hệt lang1 ban đầu, nhưng địa chỉ bộ nhớ khác nhau.
  • lang1.add("PHP"): Thêm phần tử "PHP" vào lang1.
  • print ("Sau khi cập nhật lang1")...: In lại lang1lang2 cùng địa chỉ bộ nhớ. Bạn sẽ thấy lang1 có thêm "PHP", nhưng lang2 vẫn giữ nguyên. Địa chỉ của lang1 không đổi (vì chỉ thêm phần tử, không tạo set mới), còn lang2 vẫn có địa chỉ riêng.

Copy set trong Python bằng hàm set()

Để copy set trong Python, ta có thể truyền set gốc vào hàm khởi tạo set(). Cách làm này tạo ra một set mới chứa tất cả các phần tử của set ban đầu. Thay đổi trên set mới này sẽ không ảnh hưởng đến set gốc.

Trong ví dụ sau, ta sẽ tạo một bản sao của original_set bằng cách dùng hàm set() và lưu bản sao đó vào copied_set.

# Set ban đầu
original_set = {1, 2, 3, 4}

# Sao chép set bằng hàm set()
copied_set = set(original_set)
print("copied set:", copied_set)

# Chứng minh rằng hai set là độc lập
copied_set.add(5)  # Thêm phần tử vào copied_set
print("copied set:", copied_set)
print("original set:", original_set)

Khi chạy đoạn mã Python trên, ta sẽ nhận được kết quả như sau:

copied set: {1, 2, 3, 4}
copied set: {1, 2, 3, 4, 5}
original set: {1, 2, 3, 4}

Giải thích:

  • original_set = {1, 2, 3, 4}: Tạo một set ban đầu có tên là original_set.
  • copied_set = set(original_set): Tạo một set mới có tên là copied_set bằng cách truyền original_set vào hàm set(). Lúc này copied_set có nội dung giống hệt original_set.
  • print("copied set:", copied_set): In nội dung copied_set.
  • copied_set.add(5): Thêm phần tử 5 vào copied_set.
  • print("copied_set:", copied_set): In ra copied_set để thấy có phần tử 5.
  • print("original_set:", original_set): In ra original_set để thấy set gốc không bị thay đổi (không có số 5).

Copy set trong Python bằng set comprehension

Set comprehension là một cách ngắn gọn để tạo các set trong Python. Nó được sử dụng để tạo ra một set mới bằng cách lặp qua một đối tượng có thể lặp và có thể áp dụng thêm điều kiện để lọc các phần tử. Cú pháp của set comprehension tương tự như list comprehension nhưng sử dụng dấu ngoặc nhọn {} thay vì dấu ngoặc vuông [].

Cú pháp tổng quát:

{biểu_thức for phần_tử in đối_tượng_có_thể_lặp if điều_kiện}

Chúng ta có thể copy set trong Python bằng cách sử dụng set comprehension, duyệt qua các phần tử của set gốc và trực tiếp tạo ra một set mới chứa những phần tử đó.

Trong ví dụ dưới đây, chúng ta tạo một set ban đầu có tên là original_set, sau đó sao chép nó sang copied_set bằng cách sử dụng set comprehension:

# Set gốc
original_set = {1, 2, 3, 4, 5}

# Sao chép set sử dụng set comprehension
copied_set = {x for x in original_set}
print("Copied set:", copied_set)

Khi chạy đoạn code, ta nhận được:

Copied set: {1, 2, 3, 4, 5}

Giải thích:

  • original_set = {1, 2, 3, 4, 5}: Dòng này tạo một set ban đầu có tên là original_set, chứa các số nguyên từ 1 đến 5.
  • copied_set = {x for x in original_set}: Dòng quan trọng này thực hiện việc sao chép set.
    • {...}: Cho biết chúng ta đang tạo một set mới.
    • for x in original_set: Lặp qua từng phần tử x trong original_set.
    • x: Với mỗi phần tử x trong original_set, thêm chính x đó vào set mới (copied_set).

    Như vậy copied_set sẽ nhận các giá trị tương tự original_set.

  • print("Copied set:", copied_set): In giá trị của biến copied_set ra màn hình.

Vietnix – Nhà cung cấp dịch vụ VPS với công nghệ và hạ tầng hiện đại

 Với hơn 12 năm kinh nghiệm, Vietnix đã phục vụ hơn 80.000 khách hàng và kích hoạt hơn 100.000 dịch vụ. Vietnix tự hào cung cấp dịch vụ thuê VPS với tốc độ tải trang vượt trội, sử dụng ổ cứng SSD/NVMe Enterprise và CPU Intel Xeon/AMD, công nghệ ảo hóa hiện đại, tốc độ mạng không giới hạn. Dịch vụ đảm bảo website ổn định, an toàn, sao lưu dữ liệu tự động hàng tuần, giao diện quản trị Portal đa năng, đa dạng hệ điều hành, cho phép tùy chỉnh và quản lý máy chủ linh hoạt.

Đặc biệt, bạn còn có thể nâng cấp hiệu suất với VPS NVMe của Vietnix, sử dụng ổ cứng NVMe cho tốc độ truy cập và xử lý nhanh gấp 10 lần SSD. Được trang bị CPU Intel Platinum mạnh mẽ, tốc độ mạng 400 Mbps, và hỗ trợ kỹ thuật chuyên nghiệp 24/7 qua đa kênh. Dịch vụ cam kết uptime 99.9%, bảo mật tiên tiến với chứng nhận ISO 27001:2022, sao lưu dữ liệu định kỳ, và toàn quyền quản trị cho người dùng. Chất lượng dịch vụ đạt chuẩn quốc tế với chứng nhận ISO 9001:2015, đảm bảo trải nghiệm người dùng tối ưu.

Thông tin liên hệ:

  • Hotline: 18001093
  • Email: sales@vietnix.com.vn
  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
  • Website: https://vietnix.vn/

Vậy là chúng ta đã cùng nhau khám phá các cách copy set (tập hợp) trong Python, từ phương thức copy() quen thuộc, hàm set() cho đến set comprehension đầy linh hoạt. Hy vọng những kiến thức này sẽ giúp bạn chủ động hơn trong việc xử lý dữ liệu, tối ưu hóa code và giải quyết các bài toán lập trình một cách hiệu quả.

Mọi người cũng đọc

Cao Lê Viết Tiến

PHP Leader
tại
Vietnix

Kết nối với mình qua

Icon Quote
Icon Quote

Học lập trình online cùng vietnix

Học lập trình online cùng Vietnix

PHPXem thêmThu gọn