Hướng dẫn sử dụng Python Tuples

Xem thêm các chuyên mục:

1- Python Tuples

Trong Python, Tuples (bộ dữ liệu) là một dẫy (sequence) các giá trị, nó chứa nhiều phần tử (element), về cơ bản nó khá giống với List (danh sách). Nhưng khác với List, Tuples là một kiểu dữ liệu bất biến (immutable), mọi thao tác cập nhập trên Tuple đều tạo ra một thực thể mới trên bộ nhớ (memory).
Để viết một Tuple, bạn đặt các phần tử nằm trong cặp ngoặc ( ) và ngăn cách nhau bởi dấu phẩy. Các phần tử trong danh sách được đánh chỉ số (index) bắt đầu từ chỉ số 0.
tupleExample.py

fruitTuple = ("apple", "apricot", "banana","coconut", "lemen")

otherTuple = (100, "one", "two", 3)


print ("Fruit Tuple:")

print (fruitTuple)

print (" --------------------------- ")


print ("Other Tuple:")


print (otherTuple)

2- So sánh List và Tuple

Xem thêm:
List và Tuple đều là một dẫy (sequence) các phần tử. Chúng có các khác biệt sau:
  • Khi viết một List bạn sử dụng cặp dấu ngặc vuông [ ], trong khi viết một Tuple bạn sử dụng dấu ngặc tròn (  ).
     
# Đây là một Tuple.
aTuple = ("apple", "apricot", "banana")

# Đây là một List (Danh sách).
aList =  ["apple", "apricot", "banana"]
  • List là kiểu dữ liệu có thể biến đổi (mutable), bạn có thể sử dụng phương thức như append() để thêm phần tử vào List, hoặc sử dụng phương thức remove() để xóa các phần tử ra khỏi List mà không làm tạo ra thêm một thực thể 'List' khác trên bộ nhớ.
listMemoryTest.py
list1 =  [1990, 1991, 1992]

print ("list1: ", list1)

# Địa chỉ của list1 trên bộ nhớ.
list1Address = hex ( id(list1) )

print ("Address of list1: ", list1Address )

print ("\n")
print ("Append element 2001 to list1")

# Nối (append) một phần tử vào list1.
list1.append(2001)

print ("list1 (After append): ", list1)

# Địa chỉ của list1 trên bộ nhớ.
list1Address = hex ( id(list1) )


print ("Address of list1 (After append): ", list1Address )
  • Tuple là một đối tượng bất biến (immutable), nó không có các phương thức append(), remove(),.. như list. Một số phương thức, hoặc toán tử mà bạn nghĩ rằng nó dùng để cập nhập Tuple, nhưng không phải vậy, nó dựa trên Tuple ban đầu để tạo ra một Tuple mới.
tupleMemoryTest.py
tuple1 =  (1990, 1991, 1992)

# Địa chỉ của tuple1 trên bộ nhớ.
tuple1Address = hex ( id(tuple1) )

print ("Address of tuple1: ", tuple1Address )

# Nối một tuple vào tuple1.
tuple1 = tuple1 + (2001, 2002)

# Địa chỉ của tuple1 trên bộ nhớ.
tuple1Address = hex ( id(tuple1) )


print ("Address of tuple1 (After concat): ", tuple1Address )

3- Truy cập các phần tử của Tuples

Truy cập các phần tử

Sử dụng vòng lặp for để truy cập vào các phần tử của Tuple:
elementAccessExample.py

fruits = ("apple", "apricot", "banana", "coconut", "lemen", "plum", "pear")


for fruit in fruits :
    
    print ("Fruit: ", fruit)

Truy cập thông qua chỉ số (index):

Bạn cũng có thể truy cập vào các phần tử của Tuple thông qua chỉ số. Các phần tử của Tuple được đánh chỉ chỉ từ trái sang phải, bắt đầu từ 0.
indexAccessExample.py
fruits = ("apple", "apricot", "banana", "coconut", "lemen", "plum", "pear")

print ( fruits )

# Số phần tử.
print ("Element count: ", len(fruits) )


for i in range (0, len(fruits) ) :
    
    print ("Element at ", i, "= ", fruits[i] )
    
# Một Tuple con chứa các phần tử từ index 1 đến 4 (1, 2, 3)
subTuple = fruits[1: 4]    

# ('apricot', 'banana', 'coconut')
print ("Sub Tuple [1:4] ", subTuple )
Bạn cũng có thể truy cập vào các phần tử của Tuple theo chỉ số âm (Negative index), các phần tử được đánh chỉ số từ phải sang trái với các giá trị -1, -2, ...
indexAccessExample2.py
fruits = ("apple", "apricot", "banana", "coconut", "lemen", "plum", "pear")

print ( fruits )

print ("Element count: ", len(fruits) )


print ("fruits[-1]: ", fruits[-1])
print ("fruits[-2]: ", fruits[-2])


subTuple1 = fruits[-4: ]

print ("\n")
print ("Sub Tuple fruits[-4: ] ")
print (subTuple1)


subTuple2  = fruits[-4:-2]

print ("\n")
print ("Sub Tuple fruits[-4:-2] ")
print (subTuple2)

4- Cập nhập Tuples

Chú ý rằng Tuple là bất biến (immutable), vì vậy nó chỉ có các phương thức hoặc toán tử để truy cập, hoặc tạo ra một Tuple mới từ các Tuple ban đầu.
updateTupleExample.py
tuple1 = (1990, 1991, 1992)

print ("tuple1: ", tuple1) 


print ("Concat (2001, 2002) to tuple1")

 
tuple2 = tuple1 + (2001, 2002)


print ("tuple2: ", tuple2)

# Một Tuple con, chứa các phần tử từ chỉ số 1 đến 4 (1,2,3)
tuple3 = tuple2[1:4]

print ("tuple2[1:4]: ", tuple3)

# Một Tuple con, chứa các phần tử từ chỉ số 1 đến cuối.
tuple4 = tuple2[1: ]

print ("tuple2[1: ]: ", tuple4)

5- Các toán tử cơ bản cho Tuples

Cũng giống như String, Tuple có 3 toán tử +, * , in.
Toán tử Mô tả Ví dụ
+ Toán tử dùng để nối (concatenate) 2 Tuple để tạo ra một Tuple mới (1, 2, 3) + ("One","Two")
--> (1, 2, 3, "One", "Two")
* Toán tử dùng để nối nhiều bản sao chép của cùng một Tuple. Và tạo ra một Tuple mới (1, 2) * 3
--> (1, 2, 1, 2, 1, 2)
in Kiểm tra một phần tử nằm trong một Tuple hay không, kết quả trả về True hoặc False. "Abc" in ("One", "Abc")
--> True
tupleOperatorsExample.py
tuple1 = (1, 2, 3)

tuple2 = ("One", "Two")

print ("tuple1: ", tuple1)
print ("tuple2: ", tuple2)
print ("\n")

tuple12 = tuple1 + tuple2

print ("tuple1 + tuple2: ", tuple12)


tuple2x3 = tuple2 * 3

print ("tuple2 * 3: ", tuple2x3)


hasThree = "Three" in tuple2

print ("'Three' in tuple2? ", hasThree)

6- Các hàm liên quan Tuples

Hàm Mô tả
cmp(list1, list2) So sánh các phần tử của cả 2 Tuple. Hàm này đã bị loại bỏ khỏi Python3.
len(list) Trả về số phần tử của danh sách
max(list) Trả về phần tử trong Tuple với giá trị lớn nhất.
min(list) Trả về phần tử trong Tuple với giá trị nhỏ nhất.
tuple(seq) Chuyển đổi một List thành một Tuple.
tupleFunctionsExample.py
tuple1 = (1991, 1994, 1992)

tuple2 = (1991, 1994, 2000, 1992)

print ("tuple1: ", tuple1)
print ("tuple2: ", tuple2)

# Trả về số lượng phần tử trong danh sách.
print ("len(tuple1): ", len(tuple1) )
print ("len(tuple2): ", len(tuple2) )

# Giá trị lớn nhất trong Tuple.
maxValue = max(tuple1)

print ("Max value of tuple1: ", maxValue)

# Giá trị nhỏ nhất trong Tuple.
minValue = min(tuple1)

print ("Min value of tuple1: ", minValue)

# (all)
# List
list3 = [2001, 2005, 2012]

print ("list3: ", list3)

# Chuyển đổi một List thành tuple.
tuple3 = tuple (list3)

print ("tuple3: ", tuple3)
Xem thêm:
  • TODO Link!

7- Các phương thức

Phương thức Mô tả
tuple.count(obj) Trả về số lần xuất hiện 'obj' trong Tuple
tuple.index(obj, [start, [stop]]) Trả về chỉ số nhỏ nhất trong danh sách tìm thấy phần tử có giá trị là obj. Ném ra ValueError nếu không tìm thấy.

Nếu có tham số start, stop, chỉ tìm từ chỉ số start đến chỉ số stop (Và không bao gồm stop).
Ví dụ:
tupleMethodsExample.py
years =  ( 1990 ,  1991 ,  1993 ,  1991 ,  1993 ,  1993 ,  1993 )

print ("Years: ", years)

 

print ("\n")

# Trả về số lần xuất hiện của 1993
print ("years.count(1993): ",years.count(1993) ) 

# Tìm vị trí xuất hiện 1993
print ("years.index(1993): ", years.index(1993) )

# Tìm vị trí xuất hiện 1993, bắt đầu từ chỉ số 3
print ("years.index(1993, 3): ", years.index(1993, 3) )

# Tìm vị trí xuất hiện 1993, bắt đầu từ chỉ số 4 tới 5 (Không bao gồm 6)
print ("years.index(1993, 4, 6): ", years.index(1993, 4, 6) )
Xem thêm:
  • TODO Link!

Xem thêm các chuyên mục: