Tải bản đầy đủ (.pdf) (30 trang)

Bài giảng Nhập môn lập trình khoa học dữ liệu: Bài 4 - Trương Xuân Nam

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (772.39 KB, 30 trang )

NHẬP MƠN LẬP TRÌNH
KHOA HỌC DỮ LIỆU
Bài 4: Ngơn Ngữ Lập Trình Python (3)


Nhắc lại kiến thức bài trước
 Python hỗ trợ kiểu số rất mạnh và nhiều loại phép
tính phong phú
 Sử dụng if cho tất cả các nhu cầu rẽ nhánh
 Phép toán if cho phép viết lệnh một cách tự nhiên
 Vịng lặp while tương tự như các ngơn ngữ khác
 Ngoại trừ việc có thể có thêm khối else

 Vòng lặp for cho phép lần lượt thực hiện lặp với các
giá trị nhận được từ một danh sách
 Sử dụng từ khóa def để định nghĩa một hàm, hàm
có thể có các tham số mặc định
TRƯƠNG XUÂN NAM

2


Nội dung
1.
2.
3.
4.
5.
6.

Kiểu dữ liệu tuần tự (sequential data type)


String (chuỗi)
List (danh sách)
Tuple (hàng)
Range (miền)
Bài tập

TRƯƠNG XUÂN NAM

3


Phần 1

Kiểu dữ liệu tuần tự
(sequential data type)
TRƯƠNG XUÂN NAM

4


Kiểu dữ liệu tuần tự
 Kiểu dữ liệu tuần tự: kiểu dữ liệu chứa bên trong
nó các dữ liệu con nhỏ hơn và thường được xử lý
bằng cách lấy ra từng phần-tử-một (bằng vòng for)
 Các kiểu dữ liệu chứa bên trong nó các dữ liệu nhỏ hơn
thường được gọi là các container (bộ chứa)
 Khái niệm “tuần tự” nhấn vào việc xử lý từng phần tử
một, nhưng không nhất thiết đây là cách xử lý duy nhất

 Có 3 kiểu tuần tự thông dụng là list, tuple và range

 Có nhiều kiểu khác như string, bytes, bytearray,…
hoặc các lập trình viên có thể tự tạo kiểu riêng theo
nhu cầu
TRƯƠNG XUÂN NAM

5


Phần 2

String (chuỗi)

TRƯƠNG XUÂN NAM

6


Kiểu chuỗi
 Một chuỗi được xem như một hàng (tuple) các
chuỗi con độ dài 1
 Trong python khơng có kiểu kí tự (character)
 Nội dung của chuỗi khơng thay đổi được, khi ghép thêm
nội dung vào chuỗi thực chất là tạo ra chuỗi mới

 Hàm len(s) trả về độ dài (số chữ) của s
 Phép toán với chuỗi:
 Phép nối chuỗi (+): s = "Good" + " " + "Morning!"
 Phép nhân bản (*): s = "AB" * 3
# số nguyên
 Kiểm tra nội dung: s in '1ABABABCD' # True

TRƯƠNG XUÂN NAM

7


Chỉ mục trong chuỗi
 Các phần tử (các chữ) trong chuỗi được đánh số
thứ tự và có thể truy cập vào từng phần tử theo chỉ
số. Python duy trì 2 cách đánh chỉ mục khác nhau:
 Đánh từ trái qua phải: chỉ số đánh từ 0 trở đi cho đến
cuối chuỗi
 Đánh từ phải qua trái: chỉ số đánh từ -1 giảm dần về
đầu chuỗi

Đ

H

T

H

U

Y

L

O


I

0

1

2

3

4

5

6

7

8

-9

-8

-7

-6

-5


-4

-3

-2

-1

TRƯƠNG XUÂN NAM

8


Cắt chuỗi
 Dựa trên chỉ mục, phép cắt chuỗi cho phép lấy nội
dung bên trong của chuỗi bằng cú pháp như sau
 <chuỗi>[vị trí A : vị trí B]
 <chuỗi>[vị trí A : vị trí B : bước nhảy]

 Giải thích:
 Tạo chuỗi con bắt đầu từ <vị-trí-A> đến trước <vị-trí-B>
• Tức là chuỗi con sẽ khơng gồm vị trí B






Nếu khơng ghi <vị-trí-A> thì mặc định là lấy từ đầu
Nếu khơng ghi <vị-trí-B> thì mặc định là đến hết chuỗi

Nếu khơng ghi <bước-nhảy> thì mặc định bước là 1
Nếu <bước-nhảy> giá trị âm thì sẽ nhận chuỗi ngược lại
TRƯƠNG XUÂN NAM

9


Cắt chuỗi
s = '0123456789'
print(s[3:6])
print(s[3:])
print(s[:6])
print(s[-7:-4])
print(s[-4:-7])
print(s[-4:-7:-1])
print(s[:len(s)])
print(s[:len(s)-1])
print(s[:])
print(s[len(s)::-1])
print(s[len(s)-1::-1])
print(s[len(s)-2::-1])

#
#
#
#
#
#
#
#

#
#
#
#

345
3456789
012345
345
654
0123456789
012345678
0123456789
9876543210
9876543210
876543210

TRƯƠNG XUÂN NAM

10


Định dạng chuỗi
 Dùng toán tử %: <chuỗi> % (<các tham số>)
 Bên trong <chuỗi> có các kí hiệu đánh dấu nơi đặt lần
lượt các tham số
 Nếu đánh dấu %s: thay thế bằng tham số dạng chuỗi
 Nếu đánh dấu %d: thay thế bằng tham số dạng nguyên
 Nếu đánh dấu %f: thay thế bằng tham số dạng thực


 Ví dụ:
"Chao %s, gio la
"Can bac 2 cua 2
"Can bac 2 cua 2
"Can bac 2 cua 2
"Can bac 2 cua 2

%d gio" % ('txnam', 10)
= %f" % (2**0.5)
= %10.3f" % (2**0.5)
= %10f" % (2**0.5)
= %.7f" % (2**0.5)
TRƯƠNG XUÂN NAM

11


Định dạng chuỗi
 Python cho phép định dạng chuỗi ở dạng f-string
myname = 'DHTL'
s = f'This is {myname}.'
w = f'{s} {myname}'
z = f'{{s}} {s}'

# 'This is DHTL.'
# 'This is DHTL. DHTL'
# '{s} This is DHTL.'

 Mạnh mẽ nhất là định dạng bằng format
# điền lần lượt từng giá trị vào giữa cặp ngoặc nhọn

'a: {}, b: {}, c: {}'.format(1, 2, 3)
# điền nhưng không lần lượt
'a: {1}, b: {2}, c: {0}'.format('one', 'two', 'three')
'two same values: {0}, {0}'.format(1, 2)
# điền và chỉ định từng giá trị
'1: {one}, 2: {two}'.format(one=111, two=222)
TRƯƠNG XUÂN NAM

12


Định dạng chuỗi
 Định dạng bằng format cho phép căn lề phong phú
# căn giữa: '
aaaa
'
'{:^10}'.format('aaaa')
# căn lề trái: 'aaaa
'
'{:<10}'.format('aaaa')
# căn lề phải '
aaaa'
'{:>10}'.format('aaaa')
# căn lề phải, thay khoảng trắng bằng -: '------aaaa'
'{:->10}'.format('aaaa')
# căn lề trái, thay khoảng trắng *: 'aaa******'
'{:*<10}'.format('aaaa')
# căn giữa, thay khoảng trắng bằng +: '+++aaaa+++'
'{:+^10}'.format('aaaa')
TRƯƠNG XUÂN NAM


13


Các phương thức của chuỗi
 Các phương thức chỉnh dạng






capitalize(): viết hoa chữ cái đầu, còn lại viết thường
upper(): chuyển hết thành chữ hoa
lower(): chuyển hết thành chữ thường
swapcase(): chữ thường thành hoa và ngược lại
title(): chữ đầu của mỗi từ viết hoa, còn lại viết thường

 Các phương thức căn lề
 center(width [,fillchar]): căn lề giữa với độ dài width
 rjust(width [,fillchar]): căn lề phải
 ljust(width [,fillchar]): căn lề trái
TRƯƠNG XUÂN NAM

14


Các phương thức của chuỗi
 Các phương thức cắt phần dư
 strip([chars]): loại bỏ những ký tự đầu hoặc cuối chuỗi

thuộc vào danh sách [chars], hoặc ký tự trống
 rstrip([chars]): làm việc như strip nhưng cho bên phải
 lstrip([chars]): làm việc như strip nhưng cho bên trái

 Tách chuỗi
 split(sep, maxsplit): tách chuỗi thành một danh sách, sử
dụng dấu ngăn cách sep, thực hiện tối đa maxsplit lần
• Tách các số nhập vào từ một dòng: input("Test: ").split(',')

 rsplit(sep, maxsplit): thực hiện như split nhưng theo
hướng ngược từ phía cuối chuỗi
TRƯƠNG XUÂN NAM

15


Các phương thức của chuỗi
 Các phương thức khác
 join(list): ghép các phần tử trong list bởi phần gạch nối
là nội dung của chuỗi, ví dụ: '-'.join(('1', '2', '3'))
 replace(old, new [,count]): thế nội dung old bằng nội
dung new, tối đa count lần
 count(sub, [start, [end]]): đếm số lần xuất hiện của sub
 startswith(prefix): kiểm tra đầu có là prefix khơng
 endswith(prefix): kiểm tra cuối có là prefix khơng
 find(sub[, start[, end]]): tìm vị trí của sub (-1: khơng có)
 rfind(sub[, start[, end]]): như find nhưng tìm từ cuối
 islower(), isupper(), istitle(), isdigit(), isspace()
TRƯƠNG XUÂN NAM


16


Phần 3

List (danh sách)

TRƯƠNG XUÂN NAM

17


Giới thiệu và khai báo
 List = dãy các đối tượng (một loại array đa năng)
 Khai báo trực tiếp bằng cách liệt kê các phần tử con
đặt trong cặp ngoặc vuông ([]), ngăn cách bởi phẩy
[1, 2, 3, 4, 5]
['a', 'b', 'c', 'd']
[[1, 2], [3, 4]]
[1, 'one', [2, 'two']]
[]

#
#
#
#
#

list
list

list
list
list

5 số nguyên
4 chuỗi
2 list con
hỗ hợp
rỗng

 Kiểu chuỗi (str) trong python có thể xem như một
list đặc biệt, bên trong gồm toàn các str độ dài 1
TRƯƠNG XUÂN NAM

18


Khởi tạo list
 Tạo list bằng constructor
l1 = list([1, 2, 3, 4]) # list 4 số nguyên
l2 = list('abc')
# list 3 chuỗi con
l3 = list()
# list rỗng

 Tạo list bằng list comprehension
#
X
#
#

Y

list 1000 số nguyên từ 0 đến 999
= [n for n in range(1000)]
list gồm 10 list con là các cặp [x, x2]
với x chạy từ 0 đến 9
= [[x, x*x] for x in range(10)]
TRƯƠNG XUÂN NAM

19


Phép toán, chỉ mục và cắt
 Giữa list và str có sự tương đồng nhất định
 List cũng hỗ trợ 3 phép toán: ghép nối (+), nhân bản (*)
và kiểm tra nội dung (in)
 List sử dụng hệ thống chỉ mục và các phép cắt phần con
tương tự như str

 Điểm khác biệt là nội dung của list có thể thay đổi
l1 = list([1, 2, 3, 4])
l1[-1] = list('abc')
print(l1)
# [1, 2, 3, ['a', 'b', 'c']]
TRƯƠNG XUÂN NAM

20


Các phương thức của list

 Một số phương thức thường hay sử dụng
 count(sub, [start, [end]]): đếm số lần xuất hiện của sub
 index(sub[, start[, end]]): tìm vị trí xuất hiện của sub, trả
về ValueError nếu khơng tìm thấy
 clear(): xóa trắng list
 append(x): thêm x vào cuối list
 extend(x): thêm các phần tử của x vào cuối list
 insert (p, x): chèn x vào vị trí p trong list
 pop(p): bỏ phần tử thứ p ra khỏi list (trả về giá trị của
phần tử đó), nếu khơng chỉ định p thì lấy phần tử cuối
TRƯƠNG XUÂN NAM

21


Các phương thức của list
 Một số phương thức thường hay sử dụng
 copy(): tạo bản sao của list (tương tự list[:])
 remove(x): bỏ phần tử đầu tiên trong list có giá trị x,
báo lỗi ValueError nếu khơng tìm thấy
 reverse(): đảo ngược các phần tử trong list
 sort(key=None, reverse=False): mặc định là sắp xếp các
phần tử từ bé đến lớn trong list bằng cách so sánh trực
tiếp giá trị
x = "Trương Xuân Nam".split()
x.sort(key=str.lower)
print(x)
TRƯƠNG XUÂN NAM

22



Phần 4

Tuple (hàng)

TRƯƠNG XUÂN NAM

23


Tuple là một dạng readonly list
 Tuple = dãy các đối tượng (list), nhưng không thể bị
thay đổi giá trị trong q trình tính tốn
 Như vậy str giống tuple nhiều hơn list
 Khai báo trực tiếp bằng cách liệt kê các phần tử con
đặt trong cặp ngoặc tròn (), ngăn cách bởi phẩy
(1, 2, 3, 4, 5)
('a', 'b', 'c', 'd')
(1, 'one', [2, 'two'])
(1,)
()

#
#
#
#
#

TRƯƠNG XUÂN NAM


tuple
tuple
tuple
tuple
tuple

5 số nguyên
4 chuỗi
hỗ hợp
1 phần tử
rỗng
24


Tuple và list nhiều điểm giống nhau
 Tuple có thể tạo bằng constructor hoặc tuple
comprehension
 Tuple hỗ trợ 3 phép toán: +, *, in
 Tuple cho phép sử dụng chỉ mục và cắt
 Các phương thức thường dùng của tuple
 count(v): đếm số lần xuất hiện của v trong tuple
 index(sub[, start[, end]]): tương tự như str và list

 Tuple khác list ở điểm nào?
 Chiếm ít bộ nhớ hơn
 Nhanh hơn
TRƯƠNG XUÂN NAM

25



×