[​IMG]
Chào các bạn! Các bạn đang xem loạt bài thuộc khóa học lập trình Python miễn phí do ksec.info tổ chức. Rất vui được gặp lại các bạn ở bài 9.

Hôm nay chúng ta sẽ cùng nhau đi tìm hiểu kĩ hơn 1 số kiểu dữ liệu trong Python, các phương thức của kiểu dữ liệu đó. Bài này, mình sử dụng shell Python để ví dụ nhé. Nào, chúng ta cùng vào bài học ngay bây h nhé.

1. Danh sách

Python có một số kiểu dữ liệu gộp, dùng để nhóm các giá trị với nhau. Kiểu linh hoạt nhất là danh sách (list), có thể được viết như là một danh sách các giá trị phân cách bởi dấu phẩy ở giữa ngoặc vuông.
Code:
a = ['ga', 'vit', 12, 1234]
Để tương tác với các giá trị của danh sách, chúng ta sử dụng các chỉ mục. Chỉ mục trong Python có giá trị bắt đầu là 0. Nó cũng giống với việc chúng ta sử dụng kiểu dữ liệu mảng của các ngôn ngữ lập trình như pascal, C ...

Code:
>>> a[0]
'ga'
>>>a[3]
1234
Với danh sách, chúng ta có thể cắt nhỏ, gộp các danh sách với nhau:

Code:
>>> a[1:-1] #Cat nho
['vit', 12]
>>> a[:2] + ['cho', 2*2] #Gop danh sach
['ga', 'vit', 'cho', 4]
>>> 3*a[:3] + ['Boo!']
['ga', 'vit', 12, 'ga', 'vit', 12, 'ga', 'vit', 12, 'Boo!']
Ngoài ra, chúng ta còn có thể thay đổi giá trị của danh sách:

Code:
>>> a
['ga', 'vit', 12, 1234]
>>> a[2] = a[2] + 111 # 12 + 111
>>> a
['ga', 'vit', 123, 1234]
Tiếp đến là thay đổi các kích thước của danh sách.

Code:
>>> # Thay the 1 vai muc:
... a[0:2] = [1, 12]
>>> a
[1, 12, 123, 1234]
>>> # Xoa bo 1 vai muc:
... a[0:2] = []
>>> a
[123, 1234]
>>> # Chen them vao ds:
... a[1:1] = ['abc', 'abcd']
>>> a
[123, 'abc', 'abcd', 1234]
>>> # Nhan ban phan tu cua danh sach:
>>> a[:0] = a
>>> a
[123, 'abc', 'abcd', 1234, 123, 'abc', 'abcd', 1234]
>>> # Xoa bo cac phan tu cua danh sach (thay the cac phan tu do bang phan tu trong)
>>> a[:] = []
>>> a
[]
Lồng các danh sách vào nhau:
Code:
>>> q = [2, 3]
>>> p = [1, q, 4]
>>> len(p)
3
>>> p[1]
[2, 3]
>>> p[1][0]
2
>>> p[1].append('abc')    #Xem o phan sau
>>> p
[1, [2, 3, 'abc'], 4]
>>> q
[2, 3, 'abc']
Phương thức của danh sách:
append( x)
Thêm một phần tử vào cuối danh sách; tương đương với a[len(a):] = [x].
extend( L)
Nới rộng danh sách bằng cách chèn vào tất cả các phần tử của danh sách chỉ định; tương đương với a[len(a):] = L.
insert( i, x)
Chèn một phần tử vào vị trí chỉ định. Thông số đầu là chỉ mục của phần tử sẽ bị đẩy lùi, cho nên a.insert(0, x) chèn vào đầu danh sách, và a.insert(len(a), x) tương đương với a.append(x).
remove( x)
Bỏ ra khỏi danh sách phần tử đầu tiên có giá trị là x. Sẽ có lỗi nếu không có phần tử như vậy.
pop( [a ])
Bỏ khỏi danh sách phần tử ở vị trí chỉ định, và trả về chính nó. Nếu không chỉ định vị trí, a.pop() bỏ và trả về phần tử cuối trong danh sách. (Ngoặc vuông xung quanh a trong khai báo hàm cho biết thông số đó là không bắt buộc, không có nghĩa là bạn cần gõ dấu ngoặc vuông ở vị trí đó.
index( x)
Trả về chỉ mục của phần tử trong danh sách mà có giá trị là x. Sẽ có lỗi nếu không có phần tử như vậy.
count( x)
Trả về số lần x xuất hiện trong danh sách.
sort( )
Sắp xếp các phần tử trong danh sách, ngay tại chỗ.
reverse( )
Đảo ngược thứ tự các phần tử trong danh sách, ngay tại chỗ.
Ví dụ:
Code:
>>> a = [22.25, 111, 111, 1, 1234.5]
>>> print a.count(111), a.count(22.25), a.count('x')
2 1 0
>>> a.insert(2, -1)
>>> a.append(111) #Chen vao 111 o cuoi danh sach
>>> a
[22.25, 111, -1, 111, 1, 1234.5, 111]
>>> a.index(111) #Xem chi muc cua 111
1
>>> a.remove(111) #Xoa bo phan tu mang gia tri 111 dau tien
>>> a
[22.25, -1, 111, 1, 1234.5, 111]
>>> a.reverse() #Dao nguoc danh sach
>>> a
[111, 1234.5, 1, 111, -1, 22.25]
>>> a.sort() #Sap xep
>>> a
[-1, 1, 22.25, 111, 111, 1234.5]
Từ những phương thức trên, không biết các bạn có thể hình dung được cách sử dụng linh hoạt danh sách như ngăn xếp hay hàng đợi không nhỉ? Nếu không, chúng ta sẽ xem thử ở phần 2 nhé.
2. Sử dụng danh sách như ngăn xếp
Các phương thức của danh sách làm cho nó rất dễ sử dụng như là ngăn xếp (stack), là nơi mà phần tử cuối được thêm vào là phần tử đầu được lấy ra (``vào sau, ra trước'' hay ``last-in, first-out''). Để thêm phần tử vào đỉnh của ngăn xếp, dùng append(). Để lấy một phần tử từ đỉnh của ngăn xếp, dùng pop() mà không chỉ định chỉ mục.
Ví dụ:
Code:
>>> stack = [1,2,3]
>>> stack.append(4)
>>> stack.append(5)
>>> stack
[1,2,3,4,5]
>>> stack.pop()
5
>>> stack
[1,2,3,4]
>>> stack.pop()
4
>>> stack.pop()
3
>>> stack
[1,2]
3. Sử dụng danh sách như hàng đợi.
Bạn cũng có thể thuận tiện dùng danh sách như là hàng đợi (queue), nơi mà phần tử được thêm vào đầu tiên là phần tử được lấy ra đầu tiên ("vào trước, ra trước'' hay "first-in, first-out''). Để thêm một phần tử vào cuối hàng đợi, dùng append(). Để lấy một phần tử từ đầu hàng đợi, dùng pop() với 0 là chỉ mục.
Code:
>>> queue = ["cho", "meo", "ga"]
>>> queue.append("trau")  
>>> queue.append("bo")
>>> queue.pop(0)
'cho'
>>> queue.pop(0)
'meo'
>>> queue
['ga', 'trau', 'bo']
Hôm nay kiến thức chúng ta học dừng tại đây. Bài sau mình sẽ vẫn tiếp tục nói về Cấu trúc dữ liệu trong Python. Sau đây là bài tập của các bạn:
  • Viết chương trình thực hiện việc đổi số n ra số nhị phân, sau đó in kết quả ra màn hình. Chú ý sử dụng ngăn xếp để thực hiện.
  • Viết chương trình thực hiện in ra n số nằm trong dãy số fibonaci. Xem thêm về dãy số Fibonaci ở đây.
http://ksec.info/threads/bai-9-1-cau-truc-du-lieu-trong-python.61/
16 Feb 2014
0 Comments
G+ Comments
Comments

0 comments:

Post a Comment

:) :)) ;(( :-) =)) ;( ;-( :d :-d @-) :p :o :>) (o) [-( :-? (p) :-s (m) 8-) :-t :-b b-( :-# =p~ $-) (b) (f) x-) (k) (h) (c) cheer
Click to see the code!
To insert emoticon you must added at least one space before the code.

 
Top

Nhận xét mới đăng tải!

Loading…
X