1. Cấu trúc dữ liệu tập hợp



tải về 0.64 Mb.
Chế độ xem pdf
trang7/8
Chuyển đổi dữ liệu25.05.2023
Kích0.64 Mb.
#54743
1   2   3   4   5   6   7   8
duy khanhh

 
 
CHƯƠNG II. DỮ LIỆU TẬP HỢP TRONG PYTHON VÀ ỨNG DỤNG 
CỦA CHƯƠNG TRÌNH SCILAB 
1. Cách khai báo kiểu tập hợp trong Python 
Để tạo một tập hợp set ta có cú pháp khá giống với kiểu từ điển dictionary, với các 
phần tử trong cặp ngoặc nhọn cách nhau bởi dấu phẩy. Tuy nhiên, mỗi phần tử của set là 
một giá trị (thay cho một cặp giá trị như với dictionary), ví dụ: 
>>> A = {1, 7, 2, 6, 4, 5} 
>>> my_set = {1.0, "Hello", (1, 2, 3)} 
>>> my_set 
{1.0, 'Hello', (1, 2, 3)} 
Kiểu tập hợp set trong Python có các đặc điểm sau: 
Các phần tử của tập hợp được đặt trong cặp ngoặc nhọn {} các phần tử phân cách bởi 
dấu phẩy ,. 
Mỗi phần tử chỉ xuất hiện một lần cho dù bạn có nhập nó nhiều lần. 


12 
Kiểu tập hợp set cũng có các phép lấy hợp, lấy giao như trong Toán học. 
Để tạo một tập hợp s rỗng, bạn cần dùng hàm không có thông số s = set(). Vì sử 
dụng s = {} sẽ tạo một từ điển dictionary rỗng. 
Tập hợp set là dữ liệu thay đổi được mutable, tuy nhiên bản thân mỗi phần tử 
trong set thì lại không thể thay đổi immutable được. Tức là, các phần tử của một set chỉ 
có thể là các kiểu dữ liệu không thay đổi được immutable như các kiểu số, kiểu chuỗi… 
mà không thể là kiểu danh sách, từ điển. Như ví dụ sau, chúng ta cố gắng gán một phần 
tử của tập my_set là một danh sách [3, 4] thì Python báo lỗi kiểu dữ liệu ngay lập tức. 
>>> my_set = {1, 2, [3, 4]} 
Traceback (most recent call last): 
File "", line 1, in  
TypeError: unhashable type: 'list' 
Python cũng có loại tập hợp không thay đổi được immutable set gọi là frozenset. 
Truy cập các phần tử của một tập hợp set trong Python 
Bạn không thể truy cập các phần tử trong một tập hợp bằng cách sử dụng chỉ mục 
index như kiểu danh sách list, nhưng bạn có thể duyệt qua lần lượt các phần tử của nó 
bằng cách sử dụng vòng lặp for cùng với toán tử in để kiểm tra một đối tượng nào đó có 
thuộc về tập hợp đã cho không. 
>>> thisset = {"apple", "banana", "cherry"} 
>>> for x in thisset: 
... print(x) 
... 
cherry 
banana 
apple 
2. Các toán tử và phương thức trên kiểu tập hợp
Giả sử S, S1 và S2 là các tập hợp, x là một phần tử: 


13 
2.1. Toán tử in 
Sử dụng cú pháp x in S để kiểm tra phần tử x có nằm trong tập S hay không. Trả về 
kết quả True nếu tập S chứa phần tử x, False nếu S không chứa x. 
>>> S = {1, 3, 2, 8, 10} 
>>> 1 in S 
True 
>>> 4 in S 
False 
2.2. Hàm len() 
Hàm len(S)trả về số lượng phần tử của tập S, kết quả trả về là một số nguyên không 
âm. 
>>> S = {1, 3, 2, 8, 10} 
>>> len(S) 

>>> A = set() #tập A là tập rỗng 
>>> len(A) 

2.3. Các phương thức add, remove, discard, pop, clear 
Phương thức .add(x) sẽ thêm phần tử x vào tập 
Phương thức .update()sẽ thêm các phần tử 
của  vào . Có thể thay  bởi các dữ liệu kiểu liệt kê 
như tập hợp set, bộ tuple… 
Phương thức .remove(x), .discard(x) sẽ xóa phần tử x khỏi 
tập 
Phương thức .pop() trả về phần tử đứng đầu tiên trong tập  đồng 
thởi xóa phần tử đó khỏi tập 
>>> thisset = {2, 'banana', 'cherry', 'apple', 1, 3} 
>>> thisset 
{1, 2, 3, 'banana', 'cherry', 'apple'} 


14 
>>> thisset.pop() 

>>> thisset.pop() 

>>> thisset.pop() 

>>> thisset.pop() 
'banana' 
Chú ý rằng, tập hợp không được đánh chỉ mục nên bạn sẽ không thể biết được phần tử 
nào đứng đầu tiên, Python có quy luật riêng để quyết định phần tử nào đứng đầu tiên. 
Như trong ví dụ trên, bạn nhập vào phần tử 2 đầu tiên, nhưng Python lại lưu trong bộ nhớ 
phần tử 1 ở vị trí đầu tiên. 
Phương thức .clear() xóa tất cả các phần tử của tập 
>>> S = {1, 2, 3, 4, 5, 6} 
>>> S.add(100) #Thêm phần tử 100 vào tập S 
>>> S 
{1, 2, 3, 4, 5, 6, 100} 
>>> S.remove(1) #Xóa phần tử 1 khỏi tập S 
>>> S 
{2, 3, 4, 5, 6, 100} 
>>> S.pop() #Lấy ra phần tử đầu tiên của tập hợp 

>>> S 
{3, 4, 5, 6, 100} 
>>> S.discard(6) 
>>> S 
{3, 4, 5, 100} 


15 
>>> S.clear() #Xóa hết mọi phần tử của S, lúc này S trở thành rỗng 
>>> S 
set() 
Chú ý rằng hai thủ tục remove(x) và discard(x) cùng xóa đi phần tử x, nhưng sự khác 
nhau ở đây là nếu tập S không tồn tại phần tử x thì phương thức: 
remove(x) sẽ trả về kết quả None. 
discard(x) sẽ trả về lỗi KeyError. 
Hãy xem ví dụ sau để hiểu rõ hơn. 
>>> S = {'a', 'b', 'c', 'd'} 
>>> S.discard('e') #Không hiển thị gì, dùng print để xem kết quả 
>>> print(S.discard('e')) 
None 
>>> S.remove('e') 
Traceback (most recent call last): 
File "", line 1, in  
KeyError: 'e' 

tải về 0.64 Mb.

Chia sẻ với bạn bè của bạn:
1   2   3   4   5   6   7   8




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương