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() |
2 |
Phương thức center(width, fillchar)
|
3 |
Phương thức count(str, beg= 0,end=len(string))
|
4 |
Phương thức decode(encoding='UTF-8',errors='strict')
|
5 |
Phương thức encode(encoding='UTF-8',errors='strict')
|
6 |
Phương thức endswith(suffix, beg=0, end=len(string)) |
7 |
Phương thức expandtabs(tabsize=8)
|
8 |
Phương thức find(str, beg=0 end=len(string))
|
9 |
Phương thức index(str, beg=0, end=len(string))
|
10 |
Phương thức isalnum()
|
11 |
Phương thức isalpha()
|
12 |
Phương thức isdigit()
|
13 |
Phương thức islower()
|
14 |
Phương thức isnumeric()
|
15 |
Phương thức isspace()
|
16 |
Phương thức istitle()
|
17 |
Phương thức isupper()
|
18 |
Phương thức join(seq)
|
19 |
Phương thức len(string)
|
20 |
Phương thức ljust(width[, fillchar])
|
21 |
Phương thức lower()
|
22 |
Phương thức lstrip()
|
23 |
Phương thức maketrans()
|
24 |
Phương thức max(str)
|
25 |
Phương thức min(str)
|
26 |
Phương thức replace(old, new [, max])
|
27 |
Phương thức rfind(str, beg=0,end=len(string))
|
28 |
Phương thức rindex( str, beg=0, end=len(string))
|
29 |
Phương thức rjust(width,[, fillchar])
|
30 |
Phương thức rstrip()
|
31 |
Phương thức split(str="", num=string.count(str))
|
32 |
Phương thức splitlines( num=string.count('\n'))
|
33 |
Phương thức startswith(str, beg=0,end=len(string))
|
34 |
Phương thức strip([chars])
|
35 |
Phương thức swapcase()
|
36 |
Phương thức title()
|
37 |
Phương thức translate(table, deletechars="")
|
38 |
Phương thức upper()
|
39 |
Phương thức zfill (width)
|
40 |
Phương thức isdecimal()
|
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)
|
2 |
Hàm len(list)
|
3 |
Hàm max(list)
|
4 |
Hàm min(list)
|
5 |
Hàm list(seq)
|
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)
|
2 |
Phương thức list.count(obj)
|
3 |
Phương thức list.extend(seq)
|
4 |
Phương thức list.index(obj)
|
5 |
Phương thức list.insert(index, obj)
|
6 |
Phương thức list.pop(obj=list[-1])
|
7 |
Phương thức list.remove(obj)
|
8 |
Phương thức list.reverse()
|
9 |
Phương thức list.sort([func])
|
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)
>>>
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)
|
2 |
Hàm len(tuple)
|
3 |
Hàm max(tuple)
|
4 |
Hàm min(tuple)
|
5 |
Hàm tuple(seq)
|
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 |