0% found this document useful (0 votes)
17 views33 pages

Lecture 4 Data-Structure For-Student

Data Structure Python

Uploaded by

k60.2114510054
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views33 pages

Lecture 4 Data-Structure For-Student

Data Structure Python

Uploaded by

k60.2114510054
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

FDC104: Lập trình cho phân tích dữ liệu và tính toán khoa học

Buổi 4: Cấu trúc dữ liệu trong Python


Tổng quan

Chủ đề Hoạt động


• Cấu trúc dữ liệu • Thực hành

• Python Comprehensions
• Project review
• Các thư viện thường được sử dụng

2
Mục tiêu

Sau khi hoàn thành buổi học, bạn có thể:


• Hiểu được cấu trúc dữ liệu trong python
• Python comprehensions
• Các thư viện thường được sử dụng

3
Buổi 4: Cấu trúc dữ liệu trong Python

Phần 1: Cấu trúc dữ liệu


Kiểu dữ liệu phức hợp: List

❖ List:
• Là nơi chứa một số đối tượng, theo một thứ tự nhất định
• Thường nằm trong ngoặc vuông []
a = [1, 2, 3, 4, 5]
print(a[1]) # number 2
some_list = []
some_list.append("foo") lenh append: add phan tu vao list

some_list.append(12)
print(len(some_list)) # 2
5
Kiểu dữ liệu phức hợp: List

❖Linh hoạt, kết hợp nhiều kiểu dữ liệu khác nhau


• a = [99, "bottles of beer", ["on", "the", "wall"]]
❖Có toán tử tương tự như đối với dạng chuỗi
• a+b, a*3, a[0], a[-1], a[1:], len(a)
❖Thực hành:
• a[0] = 98
• a[1:2] = ["bottles", "of", "beer"]
-> [98, "bottles", "of", "beer", ["on", "the", "wall"]]
• del a[-1] # -> [98, "bottles", "of", "beer"]

6
List lồng (nested)

▪ List trong một list khác


▪ VD:,
• >>> s = [1,2,3]
• >>> t = [‘begin’, s, ‘end’]
• >>> t
• [‘begin’, [1, 2, 3], ‘end’]
• >>> t[1][1]
•2 [1] dau tien: list s
[1] thu 2: phan tu thu 2 trong list s

7
Các phương thức sử dụng với list
Tham khảo:
5. Data Structures — Python 3.12.0 documentation
Python - List Methods (w3schools.com)
Phương thức Chức năng Ví dụ
list.append(x) Thêm phần tử x vào cuối danh sách fruits = ['apple', 'banana', 'cherry']
fruits.append("orange")
→ fruits = ['apple', 'banana', 'cherry’,
"orange"]
list.insert(i, x) Thêm phần tử x vào vị trí I của list fruits.insert(1, "orange")
→ ['apple', 'orange', 'banana', 'cherry']
list.index(x[, start[, Trả về chỉ mục trong danh sách có phần tử đầu tiên bằng x x = fruits.index("cherry")
end]]) →2
list.count(x) Trả về số lần x xuất hiện trong danh sách x = fruits.count("cherry")
→1
list.sort(*, key=None, Sắp xếp các vị trí các phần tử trong danh sách x = fruits.count("cherry")
reverse=False) → ['BMW', 'Ford', 'Volvo']
Các phương thức sử dụng với list

Phương thức Chức năng Ví dụ


list.reverse() Đảo ngược vị trí các phần tử của danh sách fruits.reverse()
→ ['cherry', 'banana', 'apple']
list.remove(x) Xóa phần tử đầu tiên khỏi danh sách có giá trị bằng x fruits.remove("banana")
→ ['apple', 'cherry']
list.pop([i]) Xóa phần tử ở vị trí nhất định trong danh sách và in ra a = fruits.pop(1)
phần tử đó → a = ‘banana’
→ fruits = ['apple', 'cherry’]
list.extend(list_1) Mở rộng danh sách bằng cách thêm vào list tất cả các cars = ['Ford', 'BMW', 'Volvo']
phần tử từ list_1 fruits.extend(cars)
print(fruits)
→ ['apple', 'banana', 'cherry', 'Ford',
'BMW', 'Volvo']

append: them 1 phan tu


extend: them list, chi list ma thoi
Các phương thức sử dụng với list
Tham khảo:
3. An Informal Introduction to Python — Python 3.12.0 documentation
Python Lists (w3schools.com)

Phương thức Chức năng Ví dụ


list[i] Trả lại giá trị tại vị trí i của list (indexing) squares = [1, 4, 9, 16, 25]
squares[0] = 1
List[start:end] Trả lại các giá trị có vị trí từ start đến end, không bao gồm giá squares[:] = [1, 4, 9, 16, 25]
trị tại end (slicing) squares[-3:] = [9, 16, 25]
squares[1:3] = [4,9]
list_1 + list_2 Thêm giá trị của list_2 và list_1 vào với nhau squares + [36, 49, 64, 81, 100] =
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
list*n Lặp lại các giá trị trong list n lan squares*2 = [1, 4, 9, 16, 25, 1, 4, 9, 16, 25]

x in list Kiểm tra xem phần tử x có tồn tại trong list không 1 in squares → True
2 in squares → False
len(list) Trả lại số phần tử có trong list Len(squares) = 5
Kiểu dữ liệu phức hợp: Dictionary
❖ Kiểu dữ liệu Dictionary: dấu ngoặc nhọn
• Dictionary là gì? Tham chiếu giá trị thông qua khóa; “mảng kết hợp”
• Giống như một mảng được lập index bởi một string
• Cặp khóa: giá trị không có thứ tự
• Giá trị có thể là bất kì kiểu dữ liệu nào; Khóa có thể là là gần hết các
kiểu dữ liệu
{"name":"trang", "age":36, ("hello","world"):1,
42:"yes", "flag": ["red","white","blue"]}
key: flag
d = { "foo" : 1, "bar" : 2 } value: red, white, blue

print(d["bar"]) # 2
some_dict = {}
some_dict["foo"] = "yow!"
print(some_dict.keys()) # ["foo"]
11
Các phương thức sử dụng với Dictionary
Tham khảo:
5. Data Structures — Python 3.12.0 documentation
Python - Dictionary Methods (w3schools.com)
Phương thức Chức năng Ví dụ
dict.keys() Phương thức key() sẽ trả về danh sách tất cả các khóa trong thisdict = { "brand": "Ford", "model":
dictionary "Mustang", "year": 1964}
x = thisdict.keys()
print(x)
→ dict_keys(['brand', 'model', 'year'])
dict.values() Phương thức value() sẽ trả về danh sách tất cả các giá trị trong x = thisdict.values()
dictionary. → dict_values(['Ford', 'Mustang', 1964])
dict.items() Phương thức items() sẽ trả về từng mục trong từ điển, dưới x = thisdict.items()
dạng các tuple trong list. → dict_items([('brand', 'Ford'), ('model',
'Mustang'), ('year', 1964)])
x in dict Để xác định xem một khóa được chỉ định có trong từ điển hay “model” in thisdict
không → true
dict.clear() Phương thức clear() làm trống dictionary thisdict.clear() → {}

12
Các phương thức sử dụng với Dictionary
Phương thức Chức năng Ví dụ
dict.copy() Tạo bản sao cho dictionary mydict = thisdict.copy()
print(mydict)
→ thisdict = { "brand": "Ford", "model":
"Mustang", "year": 1964}
dict.get(key) trả về giá trị của phần tử với khóa được chỉ định. x = car.get("model")
→ “Mustang”
dict.setdefault(key, x) phương thức trả về giá trị của mục với khóa được chỉ định. x = car.setdefault("model", "Bronco")
Nếu khóa không tồn tại, hãy chèn khóa, với giá trị được chỉ → “Mustang”
định x = car.setdefault("color", "White")
print(x)
→ x = “White”
car = {'brand': 'Ford', 'model': 'Mustang',
'year': 1964, 'color': 'White'}
dict.update({key: value}) Chèn một phần tử vào từ điển: car.update({"color": "White"})
→ {'brand': 'Ford', 'model': 'Mustang',
'year': 1964, 'color': 'White'}
dict.popitem() Xóa phần tử cuối cùng khỏi từ điển: car.popitem()
→ {'brand': 'Ford', 'model': 'Mustang'}
13
Kiểu dữ liệu phức hợp: Tuple
❖ Kiểu dữ liệu tuple?
• Kiểu dữ liệu tuple là một bộ sưu tập các thành phần theo thứ
tự, không thể sửa đổi sau khi đã tạo.
• Nói cách khác, đó là một mảng đặc biệt, một mảng chỉ có thể đọc
và không sửa đổi được.
❖ Làm sao có thể tạo một tuple? Dấu ngoặc tròn
• VD:,
>>> t = ()
>>> t = (1, 2, 3)
>>> t = (1, )
>>> t = 1,
>>> a = (1, 2, 3, 4, 5)
>>> print a[1] # 2 14
Các phương thức sử dụng với Tuple

▪ Indexing VD:, T[i]


▪ Slicing VD:, T[1:5]
▪ Nối các tuple VD:, T + T
▪ Lặp lại VD:, T * 5
▪ Kiểm tra tồn tại VD:, ‘a’ in T
▪ Độ dài VD:, len(T)

15
Các phương thức sử dụng với Tuple
Tham khảo:
5. Data Structures — Python 3.12.0 documentation
Python Tuples (w3schools.com)
Phương thức Ví dụ
Indexing thistuple = ("apple", "banana", "cherry")
print(thistuple[1])
→ “banana”
Slicing thistuple[2:5]
→ ('cherry', 'orange', 'kiwi')
Nối y = ("orange",)
thistuple += y
print(thistuple)
→ ('apple', 'banana', 'cherry', 'orange')
Kiểm tra tồn tại "apple" in thistuple
→ True
Độ dài len(tuple)
→3

16
Kiểu dữ liệu phức hợp: Set
❖ Kiểu dữ liệu set là gì?
• Là một tập hợp không có thứ tự của các phần tử duy nhất.
❖ Làm sao có thể tạo được 1 set?
• VD:,
>>> s1 = set(['foo', 'bar', 'baz', 'foo', 'qux'])
>>> s1
{'qux', 'foo', 'bar', 'baz'}
>>> s2 = {'foo', 'bar', 'baz', 'foo', 'qux'}
>>> s2
{'qux', 'foo', 'bar', 'baz'}

17
So sánh
List Dict Set Tuple
Ví dụ List = [10, ‘a’, Dict = {“name”: Set = {1, 3, ‘s’} Tuple = (2, 5,
25] ‘data’, member:3} ‘b’)

Indexing List[0] Dict[“name”] Không để index Tuple[0]

Trùng lặp Có thể Khóa không thể trùng Không thể Có thể
lặp, giá trị có thể
Có thể thay đổi phần tử Có thể Có thể Có thể Không thể

Slicing List[0:1] Không thể Không thể Tuple[0:1]

Trường hợp sử dụng -Dữ liệu không cần truy - Liên kết logic giữa - Cần loại bỏ sự trùng lặp - Dữ liệu không thể thay
cập ngẫu nhiên key:value của dữ liệu đổi
-Đơn giản, có thể lặp lại - Tra cứu nhanh dựa trên
- Dữ liệu được sửa đổi key tùy chỉnh.
thường xuyên -Dữ liệu được sửa đổi
thường xuyên
18
Activity – Bài tập 1 • Thực hành Cấu trúc dữ liệu trong
python (Khởi tạo notebook & thực
Thực hành với cấu hành trên máy tính cá nhân)
trúc dữ liệu
(15 phút)

19
Buổi 4: Cấu trúc dữ liệu trong Python

Phần 2: Python Comprehensions


List Comprehension

• Recall list: Tạo một list các số nguyên sử dụng vòng lặp for truyền thống
list1 = []
for item in range(1, 6):
list1.append(item)
• Sử dụng list comprehension:
list2 = [item for item in range(1, 6)]
• Thực hành
• Ánh xạ: list3 = [item * 3 for item in list2]
• Lọc: list4 = [item for item in list2 if item % 2 == 0]
• Cú pháp cơ bản:
[expr for val in collection if condition]
21
Dictionary Comprehension

• Recall dictionary: Tạo một dictionary {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}


dict1 = {}
for i in range(1, 5):
dict1[i] = i**2
• Cách đơn giản hơn sử dụng dictionary comprehension:
dict2 = {i:i**2 for i in range(1, 5)}
• Điều liện lọc:
dict3 = {k:v for (k,v) in dict2.items() if v > 10}

• Cú pháp cơ bản:
{key:val for val in collection if condition}
22
Set Comprehension

• Tương tự list, dictionary comprehension, set cũng vậy:

numbers = [1, 2, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10, 10]


evens = {item for item in numbers if item % 2 == 0}

• Cú pháp cơ bản:
{expr for val in collection if condition}

23
• Thực hành với Python Comprehension
Hoạt động – Bài tập 2 (Khởi tạo notebook & thực hành trên
Python máy tính cá nhân)
Comprehensions
(15 phút)

24
Buổi 4: Cấu trúc dữ liệu trong Python

Phần 3: Project review


• Cập nhật tiến độ bài tập giữa khoá của
Hoạt động – Project các nhóm.
Review
(15 phút)

26
Buổi 4: Cấu trúc dữ liệu trong Python

Phần 4: Các thư viện thường được sử dụng


Thư viện dùng để tính toán khoa học
Pandas
(Cấu trúc dữ liệu & công cụ)

1. Thư viện để NumPy


tính toán (Mảng & Ma trận)

SciPy
(Tích phân, giải phương trình vi
phân, tối ưu hóa) 28
Thư viện trực quan hoá dữ liệu

Matplotlib
(sơ đồ và đồ thị, phổ biến nhất)
2. Thư viện trực
quan hóa dữ
liệu
Seaborn
(sơ đồ: bản đồ nhiệt, chuỗi thời
gian, sơ đồ violin)
29
Các thư viện về thuật toán trong python

Scikit-learn
(Học máy: hồi quy, phân
loại, …)
3. Thư viện
thuật toán
Statsmodels
(Khám phá dữ liệu, ước tính mô hình
thống kê và thực hiện kiểm tra thống
kê)
30
Buổi 3: Python Basics (2)

Tổng kết
Tóm tắt

Trong bài giảng này, bạn đã học được:


• Hiểu được cấu trúc dữ liệu trong python
• Python comprehensions
• Các thư viện thường được sử dụng

32
Thank you

You might also like