You are on page 1of 42

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP.

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

• Cấu trúc dữ liệu trong Python:


• Strings
• Lists
• Dictionaries
• Tuples
• Sets

3
1. Strings

• String là một chuỗi các ký tự.


• Một số thao tác làm việc với String:
• Tạo String
• Truy xuất String
• Cắt String
• Thay đổi String
• Duyệt String
• Các toán tử trên String
• Các hàm thao tác trên String

4
Tạo String

• Sử dụng hàm str():

• Hoặc

• String là immutable: giá trị không thể thay đổi

5
Truy xuất String

• Truy xuất một ký tự trong string sử dụng cú pháp:


s[<index>]
• Example: s = “Programming”

0 1 2 3 4 5 6 7 8 9 10
s P r o g r a m m i n g

s[0] s[1] s[10]

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

• s.strip([<char>]): cắt bỏ những ký tự char ở đầu và cuối của


chuỗi
• Mặc định, char = None --> ký tự cách trắng sẽ bị cắt bỏ

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

• Một List có thể chứa SubList.


• Để truy xuất phần tử trong SubList ta sử dụng thêm index:

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

• Lists là "mutable", có nghĩa là có thể thay đổi các phần tử trong


List.
• Để thay đổi giá trị của một phần tử, ta sử dụng chỉ số truy xuất
phần tử đó và gán lại cho nó giá trị mới:

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ử + .

• mylist.count(<object>): Trả về số lần xuất hiện của một phần tử


trong List

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.

• mylist.insert(<index>, <object>): Chèn phần tử <object> tại vị


trí index.

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.

• mylist.pop(index = -1): Xoá một phần tử theo vị trí.

37
Các hàm thao tác trên List
• mylist.reverse(): Đảo ngược list.

• mylist.sort(): Sắp xếp List theo thứ tự tăng dần.

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

You might also like