Kết nối

[Python] Phần 8: Danh sách (List) trong Python

813 lượt xem 
 Cập nhật lần cuối: 10/08/2019 lúc 04:45:55
Thể loại: Lập trình Python 

Trong Python, một danh sách (list) là một chuỗi các giá trị. Trong kiểu dữ liệu chuỗi, các giá trị là các ký tự. Trong khi đó, với kiểu danh sách, các giá trị có thể có bất kỳ kiểu dữ liệu gọi. Mỗi giá trị trong danh sách được gọi là phần tử.

Tạo danh sách

Để tạo danh sách bạn chỉ cần định nghĩa các phần tử giữa hai dấu ngoặc vuông đóng và mở []. Ví dụ danh sách tạo danh sách a và b như sau. Mỗi phần tử trong danh sách có thể có kiểu bất kỳ như string, float, hay int.

a = [1, 2, 3, 4]  # danh sách chứa các số nguyên
print(a)

b = ['dammio', 'sammi', 'helmi']  # danh sách chứa các chuỗi
print(b)

c = ['hello', 1, 100.7]  # danh sách chứa các phần tử có giá trị bất kỳ
print(c)

Danh sách lồng nhau

Mỗi phần tử còn có thể có kiểu dữ liệu danh sách, khi đó một danh sách có thể có nhiều danh sách con lồng nhau.

# Danh sách sau chứa một danh sách con là [300, 400]
list = ['dammio', 7.1, 9, [300, 400]] 

Danh sách rỗng

Một danh sách không có thể phần tử, gọi là danh sách rỗng.

list = []
print(list) #Danh sách rỗng không hiển thị kết quả

Truy cập các phần tử trong danh sách

Cú pháp truy cập các phần tử trong danh sách giống hệt như kiểu dữ liệu chuỗi. Vị trí index của các phần tử cũng tính từ 0 và danh sách cũng sử dụng index âm bắt đầu là -1 tính từ cuối danh sách trở về. Tương tự như chuỗi, bạn có thể truy cập một dãy các phần tử trong danh sách với cú pháp list[index1:index2] với index1, index2 là vị trí index bắt đầu và kết thúc. Nếu index1 và index2 bị khuyết thì sẽ lấy mặc định index1 là 0, index2 là chiều dài danh sách.

list = ['d','a','m','m','i','o']
print(list[1]) #Kết quả: a
print(list[-1]) #Kết quả: o
print(list[1:3]) #Kết quả: ['a', 'm']
print(list[:3]) #Kết quả: ['d', 'a', 'm']

Toán tử in

Toán tử in trong hoạt động với danh sách dùng để tìm xem phần tử cho trước có nằm trong danh sách hay không.

list = ['dammio', 'abc', 'john'] 
print('dammio' in list) #Kết quả: True
print('xyz' in list) #Kết quả: False

Bạn cũng có thể sử dụng toán tử in để duyệt danh sách trong vòng for như sau.

list = ['dammio', 'abc', 'john'] 
for x in list: 
	print(x)

Toán tử +, toán tử *

Toán tử cộng cho phép cộng hai danh sách với nhau.

a = [1, 2, 3] 
b = [4, 5, 6] 
c = a + b 
print c #Kết quả: [1, 2, 3, 4, 5, 6]

Tương tự toán tử * giúp lặp lại các phần tử trong mảng theo số lần cho trước.

a = [0] * 4 
print(a) #Kết quả: [0, 0, 0, 0] 
b = [1, 2, 3] * 3 
print(b) #Kết quả: [1, 2, 3, 1, 2, 3, 1, 2, 3] 

Các phương thức danh sách

Phần này sẽ liệt kê một số phương thức áp dụng cho danh sách.

Phương thức append

Phương thức này sẽ chèn 1 phần tử vào cuối danh sách.

t = ['a', 'b', 'c'] 
t.append('d') 
print(t)  # ['a', 'b', 'c', 'd']

Phương thức extend

Phương thức này sẽ chèn nhiều phần tử ở cuối danh sách

t1 = ['a', 'b', 'c'] 
t2 = ['d', 'e'] 
t1.extend(t2) 
print(t1) #Kết quả: ['a', 'b', 'c', 'd', 'e']

Phương thức sort

Phương thức này sẽ sắp xếp danh sách theo thứ tự phần tử từ thấp đến cao, đối với kiểu chuỗi thì sắp theo thứ tự alphabet.

t = ['d', 'c', 'e', 'b', 'a'] 
t.sort() 
print(t)  #Kết quả: ['a', 'b', 'c', 'd', 'e']

Lưu ý phương thức sort() là phương thức void vì vậy sẽ không dùng để gán cho bất kỳ biến nào.

Phương thức pop

Có nhiều cách để xóa phần tử trong danh sách, phương thức đầu tiên là pop(). Phương thức này chỉ có 1 đối số chính là vị trí index cần xóa trong danh sách.

t = ['a', 'b', 'c'] 
x = t.pop(1)  # Xóa phần tử vị trí index = 1
print(t) #Kết quả: ['a', 'c'] 
print(x) #Kết quả: b

Toán tử del

Bạn cũng có thể dùng toán tử del để xóa một phần tử trong danh sách theo vị trí index. Nếu bạn không cần lấy giá trị của phần tử bị xóa thì có thể dùng toán tử này.

t = ['a', 'b', 'c'] 
del t[1] 
print(t) #Kết quả: ['a', 'c']

Bạn cũng có thể xóa phần tử theo vị trí đầu và vị trí cuối.

t = ['a', 'b', 'c', 'd', 'e'] 
del t[1:3] 
print(t) #Kết quả: ['a', 'd', 'e']

Phương thức remove()

Nếu bạn muốn xóa giá trị phần tử thì có thể dùng phương thức remove(). Giá trị trả về của remove() là None.

t = ['a', 'b', 'c'] 
t.remove('b') #Xóa phần tử có giá trị là b
print(t) #Kết quả: ['a', 'c'] 

Danh sách và chuỗi

Bạn có thể kết hợp danh sách và chuỗi để tách các ký tự trong chuỗi thành một danh sách như sau.

s = 'dammio' 
t = list(s) 
print(t) #Kết quả: ['d', 'a', 'm', 'm', 'i', 'o'] 

Hoặc có thể tách các từ trong chuỗi bằng hàm split().

s = 'hello dammio website' 
t = s.split() 
print(t)  #Kết quả: ['hello', 'dammio', 'website'] 

Nếu bạn muốn tách từ theo ký tự đặc biệt nào đó thì thêm ký tự này trong hàm split().

s = 'hello-dammio-website' 
t = s.split('-') 
print(t)  #Kết quả: ['hello', 'dammio', 'website'] 

Bạn cũng có thể hợp nhất thành chuỗi từ các phần tử trong danh sách bằng hàm join().

t = ['hello', 'dammio', 'website'] 
delimiter = ' ' 
print(delimiter.join(t)) # Kết quả: 'hello dammio website' 

Đối tượng và giá trị

Trong Python, điều đặc biệt là 2 biến a và b nếu gán cũng giá trị thì chúng trỏ về cùng địa chỉ.

a = 'banana' 
b = 'banana' 
print(a is b) #Kết quả: True

Tuy nhiên, nếu bạn tạo 2 danh sách a và b thì chúng ta là đối tượng khác nhau.

a = [1, 2, 3] 
b = [1, 2, 3] 
print(b is a) #Kết quả: False

Nếu bạn muốn a và b cùng trỏ về 1 địa chỉ thì đơn giản chỉ cần gán b = a.

a = [1, 2, 3] 
b = a 
print(b is a) #Kết quả: True 

b[0] = 5
print(a) #Kết quả: [5, 2, 3] 
print(b) #Kết quả: [5, 2, 3] 

Bài tập

Một số bài tập mở rộng về danh sách. Cho trước 1 danh sách với các phần tử, viết hàm theo yêu cầu:

  1. Xóa 1 phần tử theo vị trí bất kỳ (đầu danh sách, cuối danh sách, giữa danh sách).
  2. Xóa các phần tử theo vị trí bắt đầu và kết thúc.
  3. Thêm mới 1 phần tử theo vị trí bất kỳ (đầu danh sách, cuối danh sách, giữa danh sách)
  4. Thêm các phần tử theo vị trí bắt đầu và vị trí kết thúc chèn.
  5. Xóa 1 phần tử đầu và cuối của danh sách.

Phần này sẽ không có bài giải, bạn hãy tự giải và post code hỏi và thảo luận thêm ở phần bình luận nếu muốn.

Kết luận

Bài viết đã giúp bạn hiểu và nắm vững các kiến thức cơ bản về danh sách trong Python thông qua các ví dụ dễ hiểu. Mời bạn theo dõi bài tiếp theo.

Bình luận Facebook

1
Để lại bình luận

avatar
1000
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
0 Các tác giả bình luận
Các tác giả bình luận gần đây
  Theo dõi  
mới nhất cũ nhất được bình chọn nhiều nhất
Thông báo của
trackback

[…] [Python] Phần 8: Danh sách (List) trong Python – 377 lượt xem […]