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.

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ủalang1
và địa chỉ bộ nhớ của nó.lang2 = lang1.copy()
: Tạo một bản sao “shallow copy” củalang1
và gán cho biếnlang2
.print ("lang2: ", lang2, "id(lang2): ", id(lang2))
: In ra nội dung củalang2
và địa chỉ bộ nhớ. Bạn sẽ thấy nội dung giống hệtlang1
ban đầu, nhưng địa chỉ bộ nhớ khác nhau.lang1.add("PHP")
: Thêm phần tử"PHP"
vàolang1
.print ("Sau khi cập nhật lang1")...
: In lạilang1
vàlang2
cùng địa chỉ bộ nhớ. Bạn sẽ thấylang1
có thêm"PHP"
, nhưnglang2
vẫn giữ nguyên. Địa chỉ củalang1
không đổi (vì chỉ thêm phần tử, không tạo set mới), cònlang2
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ềnoriginal_set
vào hàmset()
. Lúc nàycopied_set
có nội dung giống hệtoriginal_set
.print("copied set:", copied_set)
: In nội dungcopied_set
.copied_set.add(5)
: Thêm phần tử 5 vàocopied_set
.print("copied_set:", copied_set)
: In racopied_set
để thấy có phần tử 5.print("original_set:", original_set)
: In raoriginal_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
trongoriginal_set
.x
: Với mỗi phần tửx
trongoriginal_set
, thêm chínhx
đó 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ếncopied_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