Bài 8 – Kiểu dữ liệu tập hợp (set) trong ngôn ngữ lập trình Python

Lập trình Python
Lập trình Python

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ợpPhương thứcToán tử
A giao BA.intersection(B)A & B
A hợp BA.union(B)A | B
A trừ BA.difference(B)A – B
Phép trừ đối xứng A và BA.symmetric_difference(B)A^B
Tập hợp conA.issubset(B)A <= B
Tập hợp chaA.issuperset(B)A >= B
Một số phép toán với kiểu dữ liệu tập hợp

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

Xem tiếp Bài 9 – Kiểu dữ liệu tuple trong ngôn ngữ lập trình Python

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *