AI Cho Mọi Người

AI Cho Mọi Người

Tuple

 

 

Tại sao dùng Tuples?

  • Nhanh hơn list
  • Bảo vệ dữ liệu, đó là bất biến
  • Bộ dữ liệu có thể được sử dụng làm khóa trên dictionary
  • Ngoài ra, nó có thể được sử dụng theo những cách hữu ích khác trong lập trình

Constructing tuples

Để tạo một tuple, đặt các giá trị trong ngoặc

t = (1, 2, 3)

print(t[0])
print(t[1])
print(t[2])

 

Kết quả

1
2
3

 

Cũng có thể tạo một tuple không có dấu ngoặc đơn, bằng cách sử dụng dấu phẩy

t = 1, 2
print(t)

 

Kết quả:

(1, 2)

 

Nếu bạn muốn tạo một tuple với một phần tử duy nhất, bạn phải sử dụng dấu phẩy

singleton = (1, )

 

Bạn có thể lặp lại một tuple bằng cách nhân một tuple với một số

t = (1,) * 5

 

Kết quả

(1, 1, 1, 1, 1)

 

Bạn có thể nối các bộ dữ liệu bằng cách sử dụng phép gán tăng giá trị (* =, + =)

t1 = (1, 0)
print(t1)

t1 += (2,)
print(t1)

 

Kết quả

(1, 0)
(1, 0, 2)

 

Các hàm trong Tuple

Tuples được tối ưu hóa, làm cho chúng trở thành những đối tượng rất đơn giản. Có hai phương thức chỉ có sẵn:

  • Phương thức index(), để tìm sự xuất hiện của một giá trị
  • Phương count(), để đếm số lần xuất hiện của một giá trị
t = (1,2,3,1)
count = t.count(1)
index = t.index(2)

print(count)
print(index)

 

Kết quả

2
1

 

Xây dựng dictionary từ tuple

d = dict([('jan', 1), ('feb', 2), ('march', 3)])

print(d['jan'])
print(d['feb'])
print(d['march'])

 

Kết quả

1
2
3

 

Nhận giá trị từ tuple

x1,y1,z1   = ('a','b','c')
(x2,y2,z2) = ('a','b','c')
(x3,y3,z3) = range(3)

print(x1)
print(x2)
print(x3)

 

Kết quả

a
a
0

 

Tìm chiều dài của một tuple, bạn dùng hàm len()

t = (1, 2, 3, 4)
len(t)

 

Kết quả

4

 

Kỹ thuật slicing cho một tuple

t = (1,2,3,4,5)
t[2:]

 

Kết quả

(3, 4, 5)

 

newt = t

 

Giá trị của một một tuple không thể thay đổi. Nếu bạn cố thay đổi, chương trình sẽ báo lỗi

Ví dụ 1

t = (1, 2, 3, 4, 5)
t[2] = 9
print(t)

Kết quả cho ví dụ 1

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-30-b1f85e7d332a> in <module>
      1 t = (1, 2, 3, 4, 5)
----> 2 t[2] = 9
      3 print(t)

TypeError: 'tuple' object does not support item assignment

 

Ví dụ 2

t = (1, 2, [3, 10])
t[2] = [2, 3, 4]
print(t)

Kết quả cho ví dụ 2

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-32-9200476bfadb> in <module>
      1 t = (1, 2, [3, 10])
----> 2 t[2] = [2, 3, 4]
      3 print(t)

TypeError: 'tuple' object does not support item assignment

 

Ở ví dụ 2, bạn có thể thay đổi giá trị của list [3, 10] bên trong tuple. Điều này hợp lệ vì tuple chỉ chứa thông tin địa chỉ bộ nhớ đến list [3, 10]. Ví dụ mình họa như sau

t = (1, 2, [3, 10])
t[2][1] = 4
print(t)

Kết quả

(1, 2, [3, 4])

 

Lấy giá trị min và max của một tuple

t = (1, 2, 3, 4, 5)

print(min(t))
print(max(t))
print(sum(t))

 

Kết quả

1
5
15

 

Sắp xếp các giá trị trong một tuple

t = (4, 7, 3, 9, 6)
t_s = sorted(t)
print(t_s)

 

Kết quả

[3, 4, 6, 7, 9]

 

Dùng hàm zip() cho tuple

t1 = (1, 2, 3, 4, 5)
t2 = ('a', 'b', 'c', 'd', 'e')

print(t1)
print(t2)

t3 = zip(t1, t2)
for x,y in t3:
    print(x, y)

 

Kết quả

(1, 2, 3, 4, 5)
('a', 'b', 'c', 'd', 'e')
1 a
2 b
3 c
4 d
5 e