CÁC KIỂU DỮ LIỆU CHUẨN

69 / 100

CÁC KIỂU DỮ LIỆU CHUẨN

 

NUMBER TRONG PYTHON

 

Kiểu dữ liệu Number lưu trữ các giá trị số. Chúng là các kiểu dữ liệu immutable, hay là kiểu dữ liệu không thay đổi, nghĩa là các thay đổi về giá trị của kiểu dữ liệu số này sẽ tạo ra một đối tượng được cấp phát mới.

Các đối tượng Number được tạo khi bạn gán một giá trị cho chúng. Ví dụ:

var1 = 1

var2 = 10

Bạn cũng có thể xóa tham chiếu tới một đối tượng Number bởi sử dụng lệnh del. Cú pháp của lệnh del như sau:

del var1[,var2[,var3[….,varN]]]]

Bạn có thể xóa một đối tượng hoặc nhiều đối tượng bởi lệnh del này, ví dụ:

del var

del var_a, var_b

 

Python hỗ trợ 4 kiểu dữ liệu số, đó là:

  • Kiểu int: kiểu số nguyên không có dấu thập phân.
  • Kiểu long: là các số nguyên không giới hạn kích cỡ, được theo sau bởi một chữ l hoặc chữ L.
  • Kiểu float: số thực với dấu thập phân. Kiểu này cũng có thể được viết ở dạng số mũ của 10 với E hoặc e như (2.5e2 = 2.5 x 102= 250).
  • Kiểu số phức: là trong dạng a + bJ, với a và b là số thực và J (hoặc j) biểu diễn căn bậc hai của -1. Phần thực là a và phần ảo là b. Nói chung, số phức không được sử dụng nhiều trong lập trình Python.

Ngoài ra, bạn cũng cần chú ý rằng: Python cho phép bạn sử dụng chữ l với long, nhưng chúng tôi đề nghị bạn nên sử dụng chữ hoa L để tránh rắc rối với số 1.

CHUYỂN ĐỔI KIỂU SỐ TRONG PYTHON

Python chuyển đổi các số một cách nội tại bên trong một biểu thức chứa các kiểu phức tạp thành một kiểu chung để ước lượng. Tuy nhiên có đôi khi bạn cần chuyển đổi tường minh một số từ kiểu này sang kiểu khác để thỏa mãn yêu cầu của một toán tử hoặc một hàm.

  • Để chuyển đổi số x thành số thuần nguyên, bạn gõ int(x).
  • Để chuyển đổi số x thành số long, bạn gõ long(x).
  • Để chuyển đổi số x thành số thực, bạn gõ float(x).
  • Để chuyển đổi số x thành số phức với phần thực là x và phần ảo là 0, bạn gõ complex(x).
  • Để chuyển đổi số x và y thành số phức với phần thực là x và phần ảo là y, bạn gõ complex(x, y).

HẰNG TOÁN HỌC TRONG PYTHON

Python cũng định nghĩa hai hằng toán học là: hằng toán học pi và hằng toán học e.

Để làm việc và thao tác với các số, Python cũng cung cấp cho bạn một danh sách các hàm xử lý số đa dạng. Dưới đây là danh sách các hàm.

NHÓM HÀM TOÁN HỌC TRONG PYTHON

Hàm Miêu tả
Hàm abs(x) Trị tuyệt đối của x
Hàm ceil(x) Số nguyên nhỏ nhất mà không nhỏ hơn x
Hàm cmp(x, y) Trả về -1 nếu x < y, trả về 0 nếu x == y, hoặc 1 nếu x > y
Hàm exp(x) Trả về ex
Hàm fabs(x) Giá trị tuyệt đối của x
Hàm floor(x) Số nguyên lớn nhất mà không lớn hơn x
Hàm log(x) Trả về lnx, với x> 0
Hàm log10(x) Trả về log10(x), với x> 0 .
Hàm max(x1, x2,…) Trả về số lớn nhất
Hàm min(x1, x2,…) Trả về số nhỏ nhất
Hàm modf(x) Trả về phần nguyên và phần thập phân của x. Cả hai phần có cùng dấu với x và phần nguyên được trả về dưới dạng một số thực
Hàm pow(x, y) Trả về giá trị của x**y.
Hàm round(x [,n]) Làm tròn x về n chữ số sau dấu thập phân. Python làm tròn theo cách sau: round(0.5) là 1.0 và round(-0.5) là -1.0
Hàm sqrt(x) Trả về căn bậc hai của x, với x > 0

 

NHÓM HÀM XỬ LÝ SỐ NGẪU NHIÊN TRONG PYTHON

Các số ngẫu nhiên được sử dụng cho các game, test, bảo mật, … Python cung cấp các hàm sau để xử lý số ngẫu nhiên.

Hàm Miêu tả
Hàm choice(seq) Một item ngẫu nhiên trong một list, tuple, hoặc một string
Hàm randrange ([start,] stop [,step]) Một phần tử được lựa chọn một cách ngẫu nhiên từ dãy (start, stop, step)
Hàm random() Một số thực ngẫu nhiên r trong dãy 0>= r >1
Hàm seed([x]) Thiết lập giá trị nguyên bắt đầu mà được sử đụng trong bộ sinh số ngẫu nhiên. Bạn nên gọi hàm này trước khi gọi bất cứ hàm ngẫu nhiên nào khác. Hàm này trả về None
Hàm shuffle(lst) Sắp xếp các item trong list một cách ngẫu nhiên
Hàm uniform(x, y) Một số thực ngẫu nhiên r trong dãy x>= r >y

NHÓM HÀM LƯỢNG GIÁC TRONG PYTHON

Dưới đây là danh sách các hàm lượng giác trong Python:

Hàm Miêu tả
Hàm acos(x) Trả về arcos của x, giá trị radian
Hàm asin(x) Trả về arcsin của x, giá trị radian
Hàm atan(x) Trả về arctan của x, giá trị radian
Hàm atan2(y, x) Trả atan(y / x), giá trị radian
Hàm cos(x) Trả về cos của x
Hàm hypot(x, y) Trả về sqrt(x*x + y*y)
Hàm sin(x) Trả về sin của x
Hàm tan(x) Trả về tan của x
Hàm degrees(x) Chuyển đổi góc x từ radian thành độ
Hàm radians(x) Chuyển đổi góc x từ độ thành radian

 

 

 

CHUỖI (STRING) TRONG PYTHON

 

String là một trong các kiểu phổ biến nhất trong Python. String trong Python là immutable. Chúng ta có thể tạo các chuỗi bằng cách bao một text trong một trích dẫn đơn hoặc trích dẫn kép. Python coi các lệnh trích dẫn đơn và kép là như nhau. Ví dụ:

var1 = ‘Hello World!’

var2 = “Python Programming”

TRUY CẬP CÁC GIÁ TRỊ TRONG STRING

Python không hỗ trợ một kiểu chữ cái; chúng được coi như các chuỗi có độ dài là 1. Trong Python, String được lưu giữ dưới dạng các ký tự đơn trong vị trí ô nhớ liên tiếp nhau. Lợi thế của sử dụng String là nó có thể được truy cập từ cả hai hướng (tiến về trước forward hoặc ngược về sau backward).

Việc lập chỉ mục của cả hai hướng đều được cung cấp bởi sử dụng String trong Python:

  • Chỉ mục với hướng forward bắt đầu với 0,1,2,3,…
  • Chỉ mục với hướng backward bắt đầu với -1,-2,-3,…

Để truy cập các giá trị trong String, bạn sử dụng các dấu ngoặc vuông có chỉ mục ở bên trong. Ví dụ:

var1 = ‘Hello World!’

var2 = “Python Programming”

print “var1[0]: “, var1[0]

print “var2[1:5]: “, var2[1:5]

Khi code trên được thực thi sẽ cho kết quả:

var1[0]:  Hv

ar2[1:5]:  ytho

 

CẬP NHẬT STRING TRONG PYTHON

Bạn có thể cập nhật một chuỗi đang tồn tại bằng cách gán (hoặc tái gán) một biến cho string khác. Giá trị mới có thể liên quan hoặc khác hoàn toàn giá trị trước đó. Ví dụ:

var1 = ‘Hello World!’

print “Chuoi hien tai la :- “, var1[:6] + ‘Python’

Khi code trên được thực thi sẽ cho kết quả:

Chuoi hien tai la :-  Hello Python

CÁC KÝ TỰ THOÁT TRONG PYTHON

Bảng dưới đây liệt kê danh sách các ký tự thoát hoặc không thể in được mà có thể được biểu diễn với dấu \.

Ký tự thoát Biểu diễn trong hệ 16 Miêu tả
\a 0x07 Bell hoặc alert
\b 0x08 Backspace
\cx   Control-x
\C-x   Control-x
\e 0x1b Escape
\f 0x0c Formfeed
\M-\C-x   Meta-Control-x
\n 0x0a Newline
\nnn   Notation trong hệ cơ số 8, ở đây n là trong dãy từ 0 tới 7
\r 0x0d Carriage return
\s 0x20 Space
\t 0x09 Tab
\v 0x0b Tab dọc
\x   Ký tự x
\xnn   Notation trong hệ thập lục phân, ở đây n là trong dãy từ 0.9, a.f, hoặc A.F

CÁC TOÁN TỬ ĐỂ THAO TÁC VỚI STRING TRONG PYTHON

Có ba kiểu toán tử được hỗ trợ bởi String, đó là:

  • Toán tử cơ bản
  • Toán tử membership
  • Toán tử quan hệ

CÁC TOÁN TỬ CƠ BẢN ĐỂ THAO TÁC VỚI STRING

Có hai loại toán tử cơ bản có thể được sử dụng với String, đó là toán tử nối chuỗi + và toán tử lặp chuỗi *.

Toán tử nối chuỗi + được sử dụng để nối hai chuỗi với nhau và tạo nên một chuỗi mới. Ví dụ:

>>> “hoang” + “nam”

Sẽ cho kết quả là:

‘hoangnam’

>>>

Chú ý: Cả hai toán hạng được truyền cho phép nối chuỗi này phải cùng kiểu, nếu không sẽ tạo một lỗi. Ví dụ:

‘abc’ + 3

>>>

Sẽ tạo ra một lỗi là:

Traceback (most recent call last):

File “<pyshell#5>”, line 1, in <module>

‘abc’ + 3

TypeError: cannot concatenate ‘str’ and ‘int’

objects

>>>

Toán tử lặp chuỗi * sử dụng hai tham số. Một tham số là giá trị nguyên và tham số khác là chuỗi. Toán tử lặp chuỗi này được sử dụng để lặp đi lặp lại một chuỗi một số lần nào đó. Ví dụ:

>>> 5*”Hoang”

Sẽ cho kết quả là:

‘HoangHoangHoangHoangHoang’

Ghi chú: Bạn có thể sử dụng toán tử lặp chuỗi * này theo bất kỳ cách nào như int * string hoặc string * int. Cả hai tham số được truyền cho toán tử này phải không trong cùng một kiểu.

CÁC TOÁN TỬ MEMBERSHIP ĐỂ THAO TÁC VỚI STRING

Toán tử in: trả về true nếu một ký tự là có mặt trong chuỗi đã cho, nếu không nó trả về false.

Toán tử not in: trả về true nếu một ký tự là không tồn tại trong chuỗi đã cho, nếu không nó trả về false.

Ví dụ:

>>> str1=”javapoint”

>>> str2=’sssit’

>>> str3=”seomount”

>>> str4=’java’

>>> st5=”it”

>>> str6=”seo”

>>> str4 in str1

True

>>> str5 in str2

>>> st5 in str2

True

>>> str6 in str3

True

>>> str4 not in str1

False

>>> str1 not in str4

True

 

CÁC TOÁN TỬ QUAN HỆ ĐỂ THAO TÁC VỚI STRING

Tất cả các toán tử quan hệ (như <,>, <=, >=, ==, !=, <>) cũng có thể áp dụng cho các String. Các chuỗi được so sánh dựa trên giá trị ASCII hoặc Unicode. Ví dụ:

>>> “HOANG”==”HOANG”

True

>>> “afsha”>=’Afsha’

True

>>> “Z”<>”z”

True

Giải thích: Giá trị ASCII của a là 97, b là 98 và c là 99, … Giá trị ASCII của A là 65, B là 66, của C là 67, … Sự so sánh giữa các chuỗi được thực hiện dựa trên giá trị ASCII.

DẤU CHIA CHUỖI [] TRONG PYTHON

Có nhiều cách để chia một chuỗi. Khi chuỗi có thể được truy cập hoặc được lập chỉ mục từ cả hai hướng forward và backward thì chuỗi cũng có thể được chia theo hai hướng này. Dưới đây là cú pháp của dấu chia chuỗi [] trong Python:

<ten_chuoi>[chi_muc_bat_dau:chi_muc_ket_thuc]

hoac

<ten_chuoi>[:chi_muc_ket_thuc]

hoac

<ten_chuoi>[chi_muc_bat_dau:]

Chẳng hạn với cú pháp <ten_chuoi>[chi_muc_bat_dau:chi_muc_ket_thuc], thì toán tử này sẽ trả về các ký tự nằm trong dãy chỉ mục đã cho.

Ví dụ:

>>> str=”Nikhil”

>>> str[0:6]

‘Nikhil’

>>> str[0:3]

‘Nik’

>>> str[2:5]

‘khi’

>>> str[:6]

‘Nikhil’

>>> str[3:]

‘hil’

Ghi chú: chi_muc_bat_dau trong String là inclusive, tức là bao gồm cả ký tự tại vị trí chỉ mục đó. Còn chi_muc_ket_thuc là exclusive, tức là không bao gồm ký tự tại chỉ mục đó.

TOÁN TỬ ĐỊNH DẠNG CHUỖI TRONG PYTHON

Một trong những đặc điểm hay nhất trong Python là toán tử định dạng chuỗi %. Toán tử này là duy nhất cho các String và được sử dụng với hàm print(). Ví dụ:

print “Ten toi la %s va toi nang %d kg!” % (‘Hoang’, 71)

Khi code trên được thực thi sẽ cho kết quả:

Ten toi la Hoang va toi nang 71 kg!

Bảng dưới đây liệt kê danh sách đầy đủ các biểu tượng có thể được sử dụng với toán tử %:

Biểu tượng định dạng Chuyển đổi
%c Ký tự
%s Chuyển đổi thành chuỗi thông qua hàm str() trước khi định dạng
%i Số nguyên thập phân có dấu
%d Số nguyên thập phân có dấu
%u Số nguyên thập phân không dấu
%o Số nguyên hệ bát phân
%x Số nguyên hệ thập lục phân (các chữ cái thường)
%X Số nguyên hệ thập lục phân (các chữ cái hoa)
%e Ký hiệu số mũ (với chữ thường ‘e’)
%E Ký hiệu số mũ (với chữ hoa ‘E’)
%f Số thực dấu chấm động
%g Viết gọn của %f và %e
%G Viết gọn của %f và %E

TRÍCH DẪN TAM (TRIPLE QUOTE) TRONG PYTHON

Trích dẫn tam trong Python cho phép các chuỗi có thể trải rộng trên nhiều dòng, bao gồm đúng nguyên văn của các newline (dòng mới), tab và bất kỳ ký tự đặc biệt nào khác. Bạn theo dõi đoạn code sau:

para_str = “””day la mot chuoi day gom nhieu dong va gom mot so ky tu khong in duoc chang han nhuTAB ( \t ) chung se duoc hien thi dung nguyen van nhu the.”””print para_str

Khi code trên được thực thi, nó cho kết quả như dưới đây. Bạn chú ý cách mỗi ký tự đặc biệt đã được chuyển đổi thành dạng được in của nó.

day la mot chuoi day gom nhieu dong va gom mot so ky tu khong in duoc chang han nhuTAB ( \t ) chung se duoc hien thi dung nguyen van nhu the.

Các chuỗi thô (raw string) không coi dấu \ như là một ký tự đặc biệt. Mỗi ký tự bạn đặt vào trong một chuỗi thô sẽ tồn tại giống như cách bạn đã viết nó.

Để hiểu rõ vấn đề này, trước hết bạn theo dõi ví dụ:

print ‘C:\\nowhere’

Khi code trên được thực thi sẽ cho kết quả:

C:\nowhere

Bây giờ sử dụng chuỗi thô. Chúng ta đã đặt biểu thức trong r’bieu_thuc’ như sau:

print r’C:\\nowhere’

Khi code trên được thực thi sẽ cho kết quả:

C:\\nowhere

CHUỖI DẠNG UNICODE TRONG PYTHON

Các chuỗi thông thường trong Python được lưu trữ nội tại dưới dạng ASCII 8 bit, trong khi các chuỗi Unicode được lưu trữ dưới dạng Unicode 16 bit. Điều này cho phép để có một tập hợp các ký tự đa dạng hơn, bao gồm các ký tự đặc biệt từ hầu hết các ngôn ngữ trên thế giới. Bạn theo dõi ví dụ:

print u’Hello, world!’

Khi code trên được thực thi sẽ cho kết quả:

Hello, world!

Như bạn có thể thấy, các chuỗi dạng Unicode sử dụng tiền tố u, trong khi các chuỗi thô sử dụng tiền tố r.

CÁC PHƯƠNG THỨC VÀ HÀM ĐÃ XÂY DỰNG SẴN ĐỂ XỬ LÝ CHUỖI TRONG PYTHON

Python cung cấp các phương thức đa dạng đã được xây dựng sẵn để thao tác với các chuỗi. Bảng dưới đây liệt kê các phương thức này. Bạn truy cập link để thấy ví dụ chi tiết.

STT Phương thức và Miêu tả
1 Phương thức capitalize()
Viết hoa chữ cái đầu tiên của chuỗi
2 Phương thức center(width, fillchar)

Trả về một chuỗi mới, trong đó chuỗi ban đầu đã được cho vào trung tâm và hai bên đó là các fillchar sao cho tổng số ký tự của chuỗi mới là width

3 Phương thức count(str, beg= 0,end=len(string))

Đếm xem chuỗi str này xuất hiện bao nhiêu lần trong chuỗi string hoặc chuỗi con của string nếu bạn cung cấp chỉ mục ban đầu start và chỉ mục kết thúc end

4 Phương thức decode(encoding=’UTF-8′,errors=’strict’)

Giải mã chuỗi bởi sử dụng encoding đã cho

5 Phương thức encode(encoding=’UTF-8′,errors=’strict’)

Trả về phiên bản chuỗi đã được mã hóa của chuỗi ban đầu. Nếu có lỗi xảy ra, thì chương trình sẽ tạo một ValueError trừ khi các lỗi này được cung cấp với ignore hoặc replace

6 Phương thức endswith(suffix, beg=0, end=len(string))
Xác định xem nếu chuỗi string hoặc chuỗi con đã cho của string (nếu bạn cung cấp chỉ mục bắt đầu beg và chỉ mục kết thúc end) kết thúc với hậu tố suffix thì trả về true, nếu không thì phương thức này trả về false
7 Phương thức expandtabs(tabsize=8)

Mở rộng các tab trong chuỗi tới số khoảng trống đã cho; mặc định là 8 space cho mỗi tab nếu bạn không cung cấp tabsize

8 Phương thức find(str, beg=0 end=len(string))

Xác định xem chuỗi str có xuất hiện trong chuỗi string hoặc chuỗi con đã cho của string (nếu bạn cung cấp chỉ mục bắt đầu beg và chỉ mục kết thúc end), nếu xuất hiện thì trả về chỉ mục của str, còn không thì trả về -1

9 Phương thức index(str, beg=0, end=len(string))

Tương tự như find(), nhưng tạo ra một ngoại lệ nếu str là không được tìm thấy

10 Phương thức isalnum()

Trả về true nếu chuỗi có ít nhất một ký tự và tất cả ký tự là chữ-số. Nếu không hàm sẽ trả về false

11 Phương thức isalpha()

Trả về true nếu chuỗi có ít nhất 1 ký tự và tất cả ký tự là chữ cái. Nếu không phương thức sẽ trả về false

12 Phương thức isdigit()

Trả về true nếu chuỗi chỉ chứa các chữ số, nếu không là false

13 Phương thức islower()

Trả về true nếu tất cả ký tự trong chuỗi là ở dạng chữ thường, nếu không là false

14 Phương thức isnumeric()

Trả về true nếu một chuỗi dạng Unicode chỉ chứa các ký tự số, nếu không là false

15 Phương thức isspace()

Trả về true nếu chuỗi chỉ chứa các ký tự khoảng trắng whitespace, nếu không là false

16 Phương thức istitle()

Trả về true nếu chuỗi là ở dạng titlecase, nếu không là false

17 Phương thức isupper()

Trả về true nếu tất cả ký tự trong chuỗi là chữ hoa

18 Phương thức join(seq)

Nối chuỗi các biểu diễn chuỗi của các phần tử trong dãy seq thành một chuỗi

19 Phương thức len(string)

Trả về độ dài của chuỗi

20 Phương thức ljust(width[, fillchar])

Trả về một chuỗi mới, trong đó có chuỗi ban đầu được căn chỉnh vào bên trái và bên phải là các fillchar sao cho tổng số ký tự là width

21 Phương thức lower()

Chuyển đối tất cả chữ hoa trong chuỗi sang kiểu chữ thường

22 Phương thức lstrip()

Xóa tất cả các khoảng trống trắng ban đầu (leading) trong chuỗi

23 Phương thức maketrans()

Trả về một bảng thông dịch được sử dụng trong hàm translate

24 Phương thức max(str)

Trả về ký tự chữ cái lớn nhất từ chuỗi str đã cho

25 Phương thức min(str)

Trả về ký tự chữ cái nhỏ nhất từ chuỗi str đã cho

26 Phương thức replace(old, new [, max])

Thay thế tất cả sự xuất hiện của old trong chuỗi với new với số lần xuất hiện max (nếu cung cấp)

27 Phương thức rfind(str, beg=0,end=len(string))

Tương tự hàm find(), nhưng trả về chỉ mục cuối cùng

28 Phương thức rindex( str, beg=0, end=len(string))

Giống index(), nhưng trả về chỉ mục cuối cùng nếu tìm thấy

29 Phương thức rjust(width,[, fillchar])

Trả về một chuỗi mới, trong đó có chuỗi ban đầu được căn chỉnh vào bên phải và bên trái là các fillchar sao cho tổng số ký tự là width

30 Phương thức rstrip()

Xóa bỏ tất cả các khoảng trống trắng ở cuối (trailing) của chuỗi

31 Phương thức split(str=””, num=string.count(str))

Chia chuỗi theo delimeter đã cho (là space nếu không được cung cấp) và trả về danh sách các chuỗi con; nếu bạn cung cấp num thì chia chuỗi thành num chuỗi con

32 Phương thức splitlines( num=string.count(‘\n’))

Trả về một List gồm tất cả các dòng trong chuỗi, và tùy ý xác định các ngắt dòng (nếu num được cung cấp và là true).

33 Phương thức startswith(str, beg=0,end=len(string))

Xác định xem chuỗi hoặc chuỗi con (nếu bạn cung cấp chỉ mục bắt đầu beg và chỉ mục kết thúc end) có bắt đầu với chuỗi con str không, nếu có trả về true, nếu không là false

34 Phương thức strip([chars])

Thực hiện cả hai phương thức lstrip() và rstrip() trên chuỗi

35 Phương thức swapcase()

Đảo ngược kiểu của tất cả ký tự trong chuỗi

36 Phương thức title()

Trả về một bản sao của chuỗi trong đó tất cả ký tự đầu tiên của tất cả các từ là ở kiểu chữ hoa.

37 Phương thức translate(table, deletechars=””)

Trả về một bản sao đã được thông dịch của chuỗi

38 Phương thức upper()

Chuyển đổi các chữ thường trong chuỗi thành chữ hoa

39 Phương thức zfill (width)

Trả về một chuỗi mới, trong đó bao gồm chuỗi ban đầu và được đệm thêm với các số 0 vào bên trái sao cho tổng ký tự là width

40 Phương thức isdecimal()

Trả về true nếu một chuỗi dạng Unicode chỉ chứa các ký tự thập phân, nếu không là false

 

 

 

LIST TRONG PYTHON

 

Cấu trúc dữ liệu cơ bản nhất trong Python là dãy (sequence). Mỗi phần tử trong dãy được gán một số, là vị trí hoặc chỉ mục của nó. Chỉ mục đầu tiên là 0, chỉ mục thứ hai là 1, và …

Python có sáu kiểu dãy đã được xây dựng sẵn, và trong loạt bài này chúng ta sẽ tìm hiểu hai kiểu được sử dụng phổ biến nhất là List và Tuple.

LIST TRONG PYTHON

List trong Python là cấu trúc dữ liệu mà có khả năng lưu giữ các kiểu dữ liệu khác nhau.

List trong Python là thay đổi (mutable), nghĩa là Python sẽ không tạo một List mới nếu bạn sửa đổi một phần tử trong List.

List là một container mà giữ các đối tượng khác nhau trong một thứ tự đã cho. Các hoạt động khác nhau như chèn hoặc xóa có thể được thực hiện trên List.

Một List có thể được tạo ra bởi lưu trữ một dãy các kiểu giá trị khác nhau được phân biệt bởi các dấu phảy. Dưới đây là cú pháp để tạo List:

<ten_list>=[giatri1, giatri2, …, giatriN];

Ví dụ:

list1 = [‘vatly’, ‘hoahoc’, 1997, 2000];

list2 = [1, 2, 3, 4, 5 ];

list3 = [“a”, “b”, “c”, “d”];

Một List trong Python được bao xung quanh bởi các dấu ngoặc vuông [].

Tương tự như chỉ mục của chuỗi, chỉ mục của List bắt đầu từ 0.

 

TRUY CẬP CÁC GIÁ TRỊ TRONG LIST TRONG PYTHON

Để truy cập các giá trị trong List, bạn sử dụng cú pháp sau:

<ten_list>[index]

để lấy giá trị có sẵn tại chỉ mục đó.

Ví dụ:

list1 = [‘vatly’, ‘hoahoc’, 1997, 2000];

list2 = [1, 2, 3, 4, 5, 6, 7 ];

print “list1[0]: “, list1[0]

print “list2[1:5]: “, list2[1:5]

Khi code trên được thực thi sẽ cho kết quả:

list1[0]:  vatly

list2[1:5]:  [2, 3, 4, 5]

Ghi chú: Trình tổ chức bộ nhớ nội tại

List không lưu trữ các phần tử một cách trực tiếp tại chỉ mục. Sự thực là một tham chiếu được lưu trữ tại mỗi chỉ mục mà tham chiếu tới đối tượng được lưu trữ ở đâu đó trong bộ nhớ. Điều này là do một số đối tượng có thể lớn hơn một số đối tượng khác và vì thế chúng được lưu trữ tại một vị trí bộ nhớ khác.

CÁC HOẠT ĐỘNG CƠ BẢN TRÊN LIST TRONG PYTHON

Bạn có thể thực hiện các hoạt động nối với toán tử + hoặc hoạt động lặp với * như trong các chuỗi. Điểm khác biệt là ở đây nó tạo một List mới, không phải là một chuỗi.

Ví dụ cho nối List:

list1=[10,20]

list2=[30,40]

list3=list1+list2

print list3

Kết quả là:

>>>

[10, 20, 30, 40]

>>>

Ghi chus: Toán tử + ngụ ý rằng cả hai toán hạng được truyền cho nó phải là List, nếu không sẽ cho một lỗi như ví dụ sau:

list1=[10,20]list1+30print list1

Kết quả là:

Traceback (most recent call last):

File “C:/Python27/lis.py”, line 2, in <module>

list1+30

Ví dụ cho lặp List:

list1=[10,20]

print list1*1

Kết quả là:

>>> [10, 20]

>>>

CẬP NHẬT LIST TRONG PYTHON

Bạn có thể cập nhật một hoặc nhiều phần tử của List bởi gán giá trị cho chỉ mục cụ thể đó. Cú pháp:

<ten_list>[index]=<giatri>

Ví dụ:

list = [‘vatly’, ‘hoahoc’, 1997, 2000];

print “Gia tri co san tai chi muc thu 2 : ”

print list[2]list[2] = 2001;

print “Gia tri moi tai chi muc thu 2 : ”

print list[2]

Khi code trên được thực thi sẽ cho kết quả:

Gia tri co san tai chi muc thu 2 :1997

Gia tri moi tai chi muc thu 2 :2001

PHỤ THÊM PHẦN TỬ VÀO CUỐI MỘT LIST

Phương thức append() được sử dụng để phụ thêm phần tử vào cuối một List. Cú pháp:

<ten_list>.append(item)

Ví dụ:

list1=[10,”hoang”,’z’]

print “Cac phan tu cua List la: ”

print list1

list1.append(10.45)

print “Cac phan tu cua List sau khi phu them la: ”

print list1

Khi code trên được thực thi sẽ cho kết quả:

>>>

Cac phan tu cua List la:

[10, ‘hoang’, ‘z’]

Cac phan tu cua List sau khi phu them la:

[10, ‘hoang’, ‘z’, 10.45]

>>>

XÓA PHẦN TỬ TRONG LIST

Để xóa một phần tử trong List, bạn có thể sử dụng lệnh del nếu bạn biết chính xác phần tử nào bạn muốn xóa hoặc sử dụng phương thức remove() nếu bạn không biết. Ví dụ:

list1 = [‘vatly’, ‘hoahoc’, 1997, 2000];

print list1

del list1[2];

print “Cac phan tu cua List sau khi xoa gia tri tai chi muc 2 : ”

print list1

Khi code trên được thực thi sẽ cho kết quả:

[‘vatly’, ‘hoahoc’, 1997, 2000]

Cac phan tu cua List sau khi xoa gia tri tai chi muc 2 :

[‘vatly’, ‘hoahoc’, 2000]

Bạn cũng có thể sử dụng del để xóa tất cả phần tử từ chi_muc_bat_dau tới chi_muc_ket_thuc như sau:

list1=[10,’hoang’,50.8,’a’,20,30]

print list1

del list1[0]

print list1

del list1[0:3]

print list1

Khi code trên được thực thi sẽ cho kết quả:

>>>

[10, ‘hoang’, 50.8, ‘a’, 20, 30] [‘hoang’, 50.8, ‘a’, 20, 30] [20, 30]

>>>

CÁC HÀM VÀ PHƯƠNG THỨC ĐÃ XÂY DỰNG SẴN ĐỂ XỬ LÝ LIST TRONG PYTHON

Ngoài các phương thức kể trên, Python còn xây dựng sẵn rất nhiều hàm và phương thức để bạn có thể sử dụng khi làm việc với List. Bảng dưới đây liệt kê các phương thức này. Bạn truy cập link để thấy ví dụ chi tiết.

Danh sách các hàm xử lý List trong Python:

STT Hàm và Miêu tả
1 Hàm cmp(list1, list2)

So sánh các phần tử trong cả hai list

2 Hàm len(list)

Trả về độ dài của list

3 Hàm max(list)

Trả về phần tử có giá trị lớn nhất trong list

4 Hàm min(list)

Trả về phần tử có giá trị nhỏ nhất trong list

5 Hàm list(seq)

Chuyển đổi một tuple thành list

Danh sách các phương thức xử lý List trong Python:

STT Phương thức và Miêu tả
1 Phương thức list.append(obj)

Phụ thêm đối tượng obj vào cuối list

2 Phương thức list.count(obj)

Đếm xem có bao nhiêu lần mà obj xuất hiện trong list

3 Phương thức list.extend(seq)

Phụ thêm các nội dung của seq vào cuối list

4 Phương thức list.index(obj)

Trả về chỉ mục thấp nhất trong list mà tại đó obj xuất hiện

5 Phương thức list.insert(index, obj)

Chèn đối tượng obj vào trong list tại index đã cho

6 Phương thức list.pop(obj=list[-1])

Xóa và trả về phần tử cuối cùng hoặc đối tượng obj có chỉ mục đã cung cấp từ list đã cho

7 Phương thức list.remove(obj)

Xóa đối tượng obj từ list

8 Phương thức list.reverse()

Đảo ngược thứ tự các đối tượng trong list

9 Phương thức list.sort([func])

Sắp xếp các đối tượng của list, sử dụng hàm so sánh nếu được cung cấp

 

 

 

TUPLE TRONG PYTHON

 

Một tuple là một dãy các đối tượng không thay đổi (immutable) trong Python, vì thế tuple không thể bị thay đổi. Các tuple cũng là các dãy giống như List.

Không giống List mà sử dụng các dấu ngoặc vuông, thì tuple sử dụng các dấu ngoặc đơn. Các đối tượng trong tuple được phân biệt bởi dấu phảy và được bao quanh bởi dấu ngoặc đơn (). Giống như chỉ mục của chuỗi, chỉ mục của tuple bắt đầu từ 0.

Ví dụ:

>>> data=(10,20,’ram’,56.8)

>>> data2=”a”,10,20.9

>>> data

(10, 20, ‘ram’, 56.8)

>>> data2

(‘a’, 10, 20.9)

>>>

tup1 = (50,);
Các tuple cũng có thể được lồng vào nhau, ví dụ:
tupl1=’a’,’hoang’,10.56
tupl2=tupl1,(10,20,30)
print tupl1
print tupl2
Kết quả:
>>>
(‘a’, ‘hoang’, 10.56)
((‘a’, ‘hoang’, 10.56), (10, 20, 30))
>>>

TRUY CẬP CÁC GIÁ TRỊ TRONG TUPLE TRONG PYTHON

Để truy cập các giá trị trong tuple, bạn sử dụng cách tương tự như khi truy cập các phần tử trong List. Ví dụ:

tup1 = (‘vatly’, ‘hoahoc’, 1997, 2000);

tup2 = (1, 2, 3, 4, 5, 6, 7 );

print “tup1[0]: “, tup1[0]

print “tup2[1:5]: “, tup2[1:5]

Khi code trên được thực thi sẽ cho kết quả:

tup1[0]:  vatly

tup2[1:5]:  [2, 3, 4, 5]

CÁC HOẠT ĐỘNG CƠ BẢN TRÊN TUPLE TRONG PYTHON

Giống như String và List, bạn cũng có thể sử dụng toán tử nối + và toán tử lặp * với tuple. Điểm khác biệt là nó tạo ra một tuple mới, không tạo ra một chuỗi hay list.

Ví dụ cho toán tử +:

data1=(1,2,3,4)

data2=(‘x’,’y’,’z’)

data3=data1+data2

print data1

print data2

print data3

Kết quả là:

>>>

(1, 2, 3, 4)

(‘x’, ‘y’, ‘z’)

(1, 2, 3, 4, ‘x’, ‘y’, ‘z’)

>>>

Ghi chú: Dãy mới được tạo là một Tuple mới.

Ví dụ cho toán tử +:

tuple1=(10,20,30);

tuple2=(40,50,60);

print tuple1*2

print tuple2*3

Kết quả là:

>>>

(10, 20, 30, 10, 20, 30)

(40, 50, 60, 40, 50, 60, 40, 50, 60)

>>>

 

XÓA CÁC PHẦN TỬ CỦA TUPLE TRONG PYTHON

Xóa các phần tử đơn của tuple là điều không thể. Bạn chỉ có thể xóa toàn bộ tuple với lệnh del như ví dụ sau:

data=(10,20,’hoang’,40.6,’z’)

print data

del data      #se xoa du lieu cua tuple

print data #se hien thi mot error boi vi tuple da bi xoa

Code trên sẽ cho kết quả sau. Bạn chú ý rằng sẽ có một exception được tạo ra, đó là bởi vì sau khi xóa tup thì tuple này không tồn tại nữa.

>>>

(10, 20, ‘hoang’, 40.6, ‘z’)

Traceback (most recent call last):

File “C:/Python27/t.py”, line 4, in >module<

print data

NameError: name ‘data’ is not defined

>>>

 

CẬP NHẬT PHẦN TỬ TRONG TUPLE TRONG PYTHON

Các phần tử của Tuple không thể được cập nhật. Đó là bởi vì tuple là không thay đổi (immutable). Tuy nhiên, các tuple có thể được sử dụng để tạo nên một tuple mới.

Ví dụ sau sẽ tạo một exception:

data=(10,20,30)

data[0]=100

print data

Khi code trên được thực thi sẽ cho kết quả:

>>>

Traceback (most recent call last):

File “C:/Python27/t.py”, line 2, in >module<

data[0]=100

TypeError: ‘tuple’ object does not support item assignment

>>>

Ví dụ tạo một tuple mới từ các tuple đang tồn tại:

data1=(10,20,30)

data2=(40,50,60)

data3=data1+data2

print data3

Khi code trên được thực thi sẽ cho kết quả:

>>>

(10, 20, 30, 40, 50, 60)

>>>

TẬP HỢP ĐỐI TƯỢNG MÀ KHÔNG CÓ DẤU GIỚI HẠN

Bất kỳ tập hợp nào gồm nhiều đối tượng, được phân biệt bởi dấu phảy, được viết mà không có các biểu tượng nhận diện (chẳng hạn như dấu ngoặc vuông cho List, dấu ngoặc đơn cho Tuple, …) thì Python mặc định chúng là Tuple. Ví dụ:

 

print ‘abc’, -4.24e93, 18+6.6j, ‘xyz’

x, y = 1, 2;

print “Gia tri cua x , y : “, x,y

Khi code trên được thực thi sẽ cho kết quả:

abc -4.24e+93 (18+6.6j) xyz

Gia tri cua x , y : 1 2

CÁC HÀM ĐƯỢC XÂY DỰNG SẴN CHO TUPLE TRONG PYTHON

Bảng dưới liệt kê các hàm đã được xây dựng sẵn để thao tác với Tuple trong Python, bạn theo link để tìm hiểu chi tiết:

STT Hàm và Miêu tả
1 Hàm cmp(tuple1, tuple2)

So sánh hai tuple với nhau

2 Hàm len(tuple)

Trả về độ dài của tuple

3 Hàm max(tuple)

Trả về item có giá trị lớn nhất từ một tuple đã cho

4 Hàm min(tuple)

Trả về item có giá trị nhỏ nhất từ một tuple đã cho

5 Hàm tuple(seq)

Chuyển đổi một dãy thành tuple

TẠI SAO CHÚNG TA SỬ DỤNG TUPLE?

  • Trình xử lý các tuple là nhanh hơn các List.
  • Làm cho dữ liệu an toàn hơn bởi vì tuple là không thay đổi (immutable) và vì thế nó không thể bị thay đổi.
  • Các tuple được sử dụng để định dạng String.

 

 

DICTIONARY TRONG PYTHON

 

Dictionary trong Python là một tập hợp các cặp key và value không có thứ tự. Nó là một container mà chứa dữ liệu, được bao quanh bởi các dấu ngoặc móc đơn {}. Mỗi cặp key-value được xem như là một item. Key mà đã truyền cho item đó phải là duy nhất, trong khi đó value có thể là bất kỳ kiểu giá trị nào. Key phải là một kiểu dữ liệu không thay đổi (immutable) như chuỗi, số hoặc tuple.

Key và value được phân biệt riêng rẽ bởi một dấu hai chấm (:). Các item phân biệt nhau bởi một dấu phảy (,). Các item khác nhau được bao quanh bên trong một cặp dấu ngoặc móc đơn tạo nên một Dictionary trong Python

Ví dụ:

data={100:’Hoang’ ,101:’Nam’ ,102:’Binh’}

print data

Kết quả là:

>>>

{100: ‘Hoang’, 101: ‘Nam’, 102: ‘Binh’}

>>>

 

CÁC THUỘC TÍNH CỦA KEY TRONG DICTIONARY

Không có hạn chế nào với các value trong Dictionary, tuy nhiên với key thì bạn cần chú ý các điểm sau:

(a) Nhiều hơn một entry cho mỗi key là không được phép. Nghĩa là không cho phép bản sao các key được xuất hiện. Khi bắt gặp nhiều bản sao key trong phép gán, thì phép gán cuối cùng được thực hiện. Ví dụ:

dict = {‘Ten’: ‘Hoang’, ‘Tuoi’: 7, ‘Ten’: ‘Nam’};

print “dict[‘Ten’]: “, dict[‘Ten’]

Kết quả là:

dict[‘Ten’]:  Nam

(b) Key phải là immutable. Nghĩa là bạn chỉ có thể sử dụng chuỗi, số hoặc tuple làm key của Dictionary. Dưới đây là ví dụ đơn giản:

dict = {[‘Ten’]: ‘Hoang’, ‘Tuoi’: 7};

print “dict[‘Ten’]: “, dict[‘Ten’]

Khi code trên được thực thi sẽ cho kết quả:

Traceback (most recent call last):

File “test.py”, line 3, in <module>

dict = {[‘Ten’]: ‘Hoang’, ‘Tuoi’: 7};

TypeError: list objects are unhashable

TRUY CẬP CÁC GIÁ TRỊ TRONG DICTIONARY TRONG PYTHON

Khi chỉ mục không được định nghĩa với Dictionary, thì các giá trị trong Dictionary có thể được truy cập thông qua các key của chúng. Cú pháp:

<ten_dictionary>[key]

Ví dụ:

<ten_dictionary>[key]

Ví dụ:

data1={‘Id’:100, ‘Ten’:’Thanh’, ‘Nghenghiep’:’Developer’}

data2={‘Id’:101, ‘Ten’:’Chinh’, ‘Nghenghiep’:’Trainer’}

print “Id cua nhan vien dau tien la”,data1[‘Id’]

print “Id cua nhan vien thu hai la”,data2[‘Id’]

print “Ten cua nhan vien dau tien la:”,data1[‘Ten’]

print “Nghe nghiep cua nhan vien thu hai la:”,data2[‘Nghenghiep’]

Kết quả là:

>>>

Id cua nhan vien dau tien la 100

Id cua nhan vien thu hai la 101

Ten cua nhan vien dau tien la is Thanh

Nghe nghiep cua nhan vien thu hai la Trainer

>>>

Nếu bạn cố gắng truy cập một item với một key nào mà không là một phần của Dictionary nào, thì bạn sẽ nhận một lỗi như sau:

dict = {‘Ten’: ‘Hoang’, ‘Tuoi’: 7, ‘Lop’: ‘Lop1’};

print “dict[‘Huong’]: “, dict[‘Huong’]

 

Code trên sẽ cho một lỗi là:

dict[‘Hoang’]:

Traceback (most recent call last):

File “test.py”, line 4, in <module>

print “dict[‘Huong’]: “, dict[‘Huong’];

KeyError: ‘Huong’

CẬP NHẬT DICTIONARY TRONG PYTHON

Item (cặp key-value) có thể được cập nhật. Bạn cập nhật một Dictionary bằng cách thêm một entry mới hoặc một cặp key-value mới, sửa đổi một entry đã tồn tại, hoặc xóa một entry đang tồn tại như trong ví dụ đơn giản sau:

data1={‘Id’:100, ‘Ten’:’Thanh’, ‘Nghenghiep’:’Developer’}

data2={‘Id’:101, ‘Ten’:’Chinh’, ‘Nghenghiep’:’Trainer’}

data1[‘Nghenghiep’]=’Manager’

data2[‘Mucluong’]=17000000

data1[‘Mucluong’]=12000000

print data1

print data2

Khi code trên được thực thi sẽ cho kết quả:

>>>

{‘Mucluong’: 12000000, ‘Nghenghiep’: ‘Manager’,’Id’: 100, ‘Ten’: ‘Thanh’}

{‘Mucluong’: 17000000, ‘Nghenghiep’: ‘Trainer’, ‘Id’: 101, ‘Ten’: ‘Chinh’}

>>>

 

XÓA PHẦN TỬ TỪ DICTIONARY TRONG PYTHON

Với Dictionary, bạn có thể xóa một phần tử đơn hoặc xóa toàn bộ nội dung của Dictionary đó. Bạn sử dụng lệnh del để thực hiện các hoạt động này.

Cú pháp để xóa một item từ Dictionary:

del ten_dictionary[key]

Để xóa cả Dictionary, bạn sử dụng cú pháp:

del  ten_dictionary

Ví dụ:

del ten_dictionary[key]

Để xóa cả Dictionary, bạn sử dụng cú pháp:

del  ten_dictionary

Ví dụ:

data={100:’Hoang’, 101:’Thanh’, 102:’Nam’}

del data[102]

print data

del data

print data   #se hien thi mot error boi vi Dictionary da bi xoa.

Code trên sẽ cho kết quả như dưới đây. Bạn có thể thấy một ngoại lệ được tạo ra bởi vì sau khi xóa data thì Dictionary này không tồn tại nữa.

>>>

{100: ‘Hoang’, 101: ‘Thanh’}

Traceback (most recent call last):

File “C:/Python27/dict.py”, line 5, in >module<

print data

NameError: name ‘data’ is not defined

>>>

CÁC HÀM VÀ PHƯƠNG THỨC ĐÃ ĐƯỢC XÂY DỰNG SẴN CHO DICTIONARY TRONG PYTHON

Python đã xây dựng sẵn các hàm sau để được sử dụng với Dictionary. Bạn có thể theo dõi ví dụ chi tiết về các hàm này ở phần dưới đây.

STT Hàm và Miêu tả
1 Hàm cmp(dict1, dict2)

So sánh các phần tử của cả hai dict

2 Hàm len(dict)

Độ dài của dict. Nó sẽ là số item trong Dictionary này

3 Hàm str(dict)

Tạo ra một biểu diễn chuỗi có thể in được của một dict

4 Hàm type(variable)

Trả về kiểu của biến đã truyền. Nếu biến đã truyền là Dictionary, thì nó sẽ trả về một kiểu Dictionary

Các phương thức đã được xây dựng sẵn cho Dictionary trong Python:

STT Phương thức và Miêu tả
1 Phương thức dict.clear()

Xóa tất cả phần tử của dict

2 Phương thức dict.copy()

Trả về bản sao của dict

3 Phương thức fromkeys(seq,value1)/ fromkeys(seq)

Được sử dụng để tạo một Dictionary mới từ dãy seq và value1. Trong đó dãy seq tạo nên các key và tất cả các key chia sẻ các giá trị từ value1. Trong trường hợp value1 không được cung cấp thì value của các key được thiết lập là None

4 Phương thức dict.get(key, default=None)

Trả về giá trị của key đã cho. Nếu key không có mặt thì phương thức này trả về None

5 Phương thức dict.has_key(key)

Trả về true nếu key là có mặt trong Dictionary, nếu không là false

6 Phương thức dict.items()

Trả về tất cả các cặp (key-value) của một Dictionary

7 Phương thức dict.keys()

Trả về tất cả các key của một Dictionary

8 Phương thức dict.setdefault(key, default=None)

Tương tự get(), nhưng sẽ thiết lập dict[key]=default nếu key là không tồn tại trong dict

9 Phương thức dict.update(dict2)

Được sử dụng để thêm các item của dictionary 2 vào Dictionary đầu tiên

10 Phương thức dict.values()

Trả về tất cả các value của một Dictionary