Q a m a t h

Loading...
Vui lòng chờ trong giây lát!

Bài 8 – Kiểu dữ liệu tập hợp (set)

Python
là một ngôn ngữ lập trình đa mẫu hình, lập trình hướng đối tượng và lập trình cấu trúc được hỗ trợ hoàn toàn, và nhiều tính năng của nó cũng hỗ trợ lập trình hàm và lập trình hướng khía cạnh (bao gồm siêu lập trình và siêu đối tượng (phương thức thần kỳ)).Các mẫu hình khác cũng được hỗ trợ thông qua các phần mở rộng, bao gồm thiết kế theo hợp đồng và lập trình logic.

1. Tìm hiểu kiểu dữ liệu tập hợp (set)
– Kiểu tập hợp là một nhóm các phần tử được kết hợp lại và một dạng kiểu dữ liệu không tuần tự (các phần tử không được đánh chỉ số thứ tự)
– Mỗi phần tử của kiểu tập hợp có thể là số, xâu, logic, tuple và không thể là list, dict hay set
– Các phần tử không thể trùng nhau
2. Thao tác với kiểu dữ liệu tập hợp
a. Khởi tạo dữ liệu tập hợp dạng liệt kê:
<tên biến>={<phần tử 1>, <phần tử 2>,…,<phần tử n>}

– Ví dụ:
#1
A = set()
#Tạo biến A kiểu tập hợp (rỗng), không dùng A = {} vì đây là kiểu từ điển
#2
s = “Xin chao”; A = set(s);
#Tạo biến tập hợp A gồm các phần tử {'i', 'X', ' ', 'c', 'a', 'o', 'n', 'h'}
#3
B = {1, 2, 3, 4} #Tạo biến B kiểu tập hợp gồm 4 phần tử
C = {1, 2, 3, “One”} #Tạo biến C kiểu tập hợp gồm 4 phần tử

b. Khởi tạo dữ liệu tập hợp dạng mô tả (set comprehension):
 <set> = {<biểu thức> for <biến> in <sequence> if <điều kiện>}

– Ví dụ:
#1
s = “ABC”; A = {ord(ch) for ch in s}
#Tạo tập hợp A gồm 3 phần tử là {65, 66, 67}
#2
A = {1, 2, 4, 5, 6}
B = {x for x in A if x%2!=0}
#Tạo tập hợp B gồm các phần tử lẻ của tập hợp A
#3
A = {0, 32, 65, 48, 50}
B = {chr(x) for x in A if x>=48 and x <=57}
#Tạo tập hợp B gồm các phần tử là {“0”,”2”}

c. Thêm phần tử vào tập hợp: <set>.add(<giá trị>)
d. Xóa một phần tử từ tập hợp: <set>.remove(<phần tử cần xóa>)
e. Sao chép một tập hợp: <set 2> = <set 1>.copy()
f. Xóa tất cả, làm rỗng tập hợp: <set>.clear()
3. Các lệnh và toán tử trên dữ liệu tập hợp
Phép toán tập hợp - Phương thức - Toán tử
A giao B - A.intersection(B) - A & B
A hợp B - A.union(B) - A | B
A trừ B - A.difference(B) - A – B
Phép trừ đối xứng A và B - A.symmetric_difference(B) - A^B
Tập hợp con A.issubset(B) - A <= B
Tập hợp cha A.issuperset(B) - A >= B
Lưu ý: Tất cả các kiểu gồm: kiểu xâu, kiểu danh sách, kiểu từ điển, kiểu tập hợp đều có thể sử dụng hàm len(<tên biến>) để trả về số lượng phần tử.
Ví dụ: Viết chương trình nhập vào 2 xâu bất kỳ có ký tự số, xuất ra màn hình các số có đồng thời trong cả 2 xâu đó và có tổng cộng bao nhiêu số như vậy?
Chương trình:
s1 = input("Mời nhập xâu thứ nhất: ")	#Nhập vào xâu thứ 1
s2 = input("Mời nhập xâu thứ hai: ") #Nhập vào xâu thứ 2
A = {ch for ch in s1 if ord(ch)>=48 and ord(ch)<=57}
#Tạo tập hợp A gồm các ký tự số từ xâu s1
B = {ch for ch in s2 if ord(ch)>=48 and ord(ch)<=57}
#Tạo tập hợp A gồm các ký tự số từ xâu s2
C = A & B #Giao của 2 tập hợp A và B
print("Có",len(C),"ký tự số trùng nhau giữa 2 xâu")
#Xuất ra số ký tự số trùng nhau
print("Danh sách các ký tự số đó là:")
for x in C: print(x,end=" ")
#Xuất ra màn hình các ký tự số trùng nhau
Mới hơn Cũ hơn
Trang trí đón tết cho blog/website bằng hình ảnh câu đối, cành mai