Professional Documents
Culture Documents
HCM
BỘ MÔN CÔNG NGHỆ PHẦN MỀM - KHOA CÔNG NGHỆ THÔNG TIN
CHƯƠNG 9
STRINGS VÀ LISTS
1
NỘI DUNG
1. Strings 2. Lists
2
Giới thiệu
3
1. Strings
4
Tạo String
• Hoặc
5
Truy xuất String
0 1 2 3 4 5 6 7 8 9 10
s P r o g r a m m i n g
6
Truy xuất String
• Các chỉ số dương: có giá trị từ 0 đến len(s) – 1
7
Truy xuất String
• Python cũng cho phép sử dụng chỉ số âm
Chỉ số được đánh từ cuối ngược về đầu: -1 → -len(s)
-11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1
P r o g r a m m i n g
0 1 2 3 4 5 6 7 8 9 10
• Vị trí thực sự của các ký tự được tính bằng cách cộng thêm
độ dài của String với chỉ số âm.
8
Cắt String
• Cú pháp cắt String:
s[start : end : step]
• Kết quả trả về String con từ index start đến index end – 1.
• Start, end, step có thể vắng.
• Mặc định: start = 0, end = len(s), step = 1
9
Thay đổi String
• Ta có thể thay đổi một hoặc nhiều ký tự trong String được không?
• Ví dụ:
Error
• Giải pháp: tạo một String mới sử dụng toán tử cắt String và gán
kết quả lại cho s
10
Duyệt String
• Một String có thể lặp được → có thể sử dụng vòng lặp để duyệt
tuần tự các ký tự trong String.
11
Các toán tử trên String
• + : nối 2 String
• * : lặp lại String n lần
• in và not in: kiểm tra một String có nằm trong một String khác
hay không
12
Các toán tử trên String
• So sánh Strings
• Sử dụng các toán tử so sánh: ==,!=, >, >=, <,<=
• Python so sánh lần lượt các ký tự tương ứng ở 2 chuỗi
13
Các hàm thao tác trên String
Hàm built-in
• ord(ch): trả về mã ASCII của ký tự ch.
• chr(code): trả về ký tương ứng với code
14
Các hàm thao tác trên String
Chuyển kiểu
• s.lower(): trả về bản sao của chuỗi ở dạng chữ thường
• s.upper(): trả về bản sao của chuỗi ở dạng chữ in hoa
• s.capitalize(): trả về bản sao của chuỗi với ký tự đầu tiên được chuyển
sang in hoa
• s.title(): trả về bản sao của chuỗi với ký tự đầu tiên của mỗi từ được
chuyển sang in hoa
• s.swapcase(): trả về bản sao của chuỗi với ký tự in thường chuyển sang
in hoa và ngược lại
15
Các hàm thao tác trên String
16
Các hàm thao tác trên String
Tìm kiếm và thay thế
• s.count(sub[,start[,end]]): đếm số lần xuất hiện chuỗi con trong
chuỗi s
• s.endswith(suffix[,start[,end]]): trả về True nếu chuỗi kết thúc với
hậu tố suffix.
• s.startswith(prefix[,start[,end]]): trả về True nếu chuỗi bắt đầu với
tiền tố prefix.
17
Các hàm thao tác trên String
Tìm kiếm và thay thế
• s.find(sub[,start[,end]]): trả về vị trí đầu tiên chuỗi con xuất hiện
trong s, ngược lại trả về -1
• s.replace(old, new): Trả về chuỗi mới thay thế vị trí chuỗi con old
bằng chuỗi con new
18
Các hàm thao tác trên String
Kiểm tra loại ký tự
• s.isalnum(): trả về True nếu s khác rỗng và tất cả các ký tự của nó là
chữ cái hoặc chữ số
• s.isalpha(): trả về True nếu s khác rỗng và tất cả các ký tự của nó là
chữ cái
• s.isdigit(): trả về True nếu s khác rỗng và tất cả các ký tự của nó là
chữ số
19
Các hàm thao tác trên String
Kiểm tra loại ký tự
• s.islower(): trả về True nếu s khác rỗng và tất cả các ký tự của nó
đều là chữ thường
• s.isupper(): trả về True nếu s khác rỗng và tất cả các ký tự của nó
đều là chữ in hoa
20
Các hàm thao tác trên String
Tách chuỗi
• s.split(sep=None, maxsplit=-1): tách chuỗi s thành danh sách các
chuỗi con
• Sep: ký tự dùng để tách chuỗi, mặc định là None (whitespace)
• Maxsplit: số lần tách tối đa, mặc định là -1 (không giới hạns)
21
2. Lists
• Giả sử cần đọc vào dữ liệu gồm 100 số, tính trung bình cộng, và
tìm kiếm những số có giá trị lớn hơn giá trị trung bình.
• Cách giải quyết: Tạo 100 biến??? → Không khả thi.
• Làm thế nào để lưu trữ những dữ liệu này trong Python?
→ Sử dụng List
22
Lists
• List là một dãy các giá trị. Những giá trị này được gọi là phần tử của
list (elements hoặc items).
• List là kiểu dữ liệu tập hợp.
• Các phần tử của list có thể thuộc kiểu dữ liệu bất kỳ.
• Một số thao tác làm việc với List:
• Tạo List
• Truy xuất phần tử trong List
• Tạo List con
• Thay đổi List
• Duyệt List
• Các toán tử trên List
• Các hàm thao tác trên List
• List Comprehensions
• Sao chép List
23
Tạo List
• Các phần tử trong List đặt trong cặp dấu ngoặc [ ] và cách nhau
bởi dấu phẩy
• Một List có thể chứa các phần từ cùng kiểu hoặc khác kiểu.
24
Tạo List
25
Truy xuất phần tử trong List
• Ta có thể truy xuất phần tử trong List sử dụng chỉ số (index).
myList[index]
• Ví dụ: fruits= ["apple", "banana", "cherry"]
0 1 2
fruits "apple" "banana" "cherry"
-3 -2 -1
fruits[0] fruits[2]
26
Truy xuất phần tử trong List
27
Tạo List con
• Cú pháp:
mylist[start : end : step]
• SubList được tạo ra từ List ban đầu gồm các phần tử bắt đầu từ
chỉ số start đến chỉ số end – 1
28
Thay đổi List
29
Duyệt List
• Sử dụng vòng lặp for để duyệt trực tiếp các phần tử của List.
• Có thể sử dụng vòng for và chỉ số để duyệt các phần tử của List
khi cần duyệt theo thứ tự khác hoặc cần xử lý những tác vụ liên
quan đến vị trí của phần tử
30
Duyệt List
31
Các toán tử trên List
Operator Description
in True nếu phần tử x nằm trong list.
not in True nếu phần tử x không nằm trong list.
+ Nối list1 và list2.
* Lặp lại List n lần.
32
Các toán tử trên List
• So sánh Lists
• Sử dụng các toán tử: >, >=, <, <=, ==,!=
• So sánh cặp phần tử đầu tiên của 2 List, nếu chúng khác nhau thì trả
ra kết quả, nếu trùng nhau thì tiếp tục so sánh cặp phần tử tiếp theo.
33
Các hàm thao tác trên List
• mylist.append(<object>): Thêm phần tử mới vào cuối List
34
Các hàm thao tác trên List
• mylist.extend(<iterable>): Thêm phần tử từ đối tượng có thể lặp
(List, String,…), thực hiện giống với toán tử + .
35
Các hàm thao tác trên List
• mylist.index(<object>): Trả về vị trí xuất hiện đầu tiên của phần
tử <object> trong list.
36
Các hàm thao tác trên List
• mylist.remove(<object>): Xoá phần tử <object> xuất hiện đầu
tiên khỏi list.
37
Các hàm thao tác trên List
• mylist.reverse(): Đảo ngược list.
38
List Comprehensions
• Giúp tạo ra List dựa trên vòng for và điều kiện một cách ngắn gọn,
đơn giản.
• Cú pháp:
new_list = [expression for member in iterable (if conditional)]
• Lưu ý: Sau vòng for có thể sử dung thêm nhiều vòng for khác hoặc
lệnh if
39
List Comprehensions
Example 1
Example 2
Example 3
40
Sao chép List
• Sử dụng lệnh gán (=) để copy dữ liệu từ một list sang list khác→
Result???
41
Sao chép List
list1 Contents
• list2 = list1 → Không copy nội dung List of list1
• Để copy dữ liệu của List1 sang List 2, list2
ta cần copy từng phần tử riêng hoặc sử dụng toán tử + hoặc sử
dụng hàm copy()
Hoặc
42