Hướng dẫn python tuple methods - phương pháp tuple python

Tuples là gồm chuỗi các mục được sắp xếp, giống như lists . Sự khác biệt chính giữa các tuple và lists là tuples không thể thay đổi (immutable) không giống như lists có thể (mutable). Đối với người lập trình mới tiếp cận với python thì list và dict có lẽ sẽ dễ tiếp cận hơn tuple

Show

1. Khởi tạo một Tuple

Có hai cách để khởi tạo một tuple trống. Bạn có thể khởi tạo một tuple trống bằng cách có () không có giá trị nào trong chúng.

# Way 1
emptyTuple = ()

Bạn cũng có thể khởi tạo một tuple trống bằng cách sử dụng function tuple.

# Way 2
emptyTuple = tuple()

Một tuple với các giá trị có thể được khởi tạo bằng cách tạo một chuỗi các giá trị được phân tách bằng dấu phẩy.

# way 1
z = (3, 7, 4, 2)
# way 2 (tuples can also can be created without parenthesis)
z = 3, 7, 4, 2

Hướng dẫn python tuple methods - phương pháp tuple python
Điều quan trọng cần lưu ý là nếu bạn muốn tạo một tuple chỉ chứa một giá trị, bạn cần có dấu phẩy sau mục của bạn.

# tuple with one value
tup1 = ('Michael',)
# tuple with one value
tup2 = 'Michael', 
# This is a string, NOT a tuple.
notTuple = ('Michael')

2. Truy cập các giá trị trong Tuples

Hướng dẫn python tuple methods - phương pháp tuple python
Mỗi giá trị trong một tuple có một index được gán. Điều quan trọng cần lưu ý là python là ngôn ngữ dựa trên index 0. Tất cả điều này có nghĩa là giá trị đầu tiên trong tuple nằm ở chỉ số 0.

# Initialize a tuple
z = (3, 7, 4, 2)
# Access the first item of a tuple at index 0
print(z[0])

Python cũng hỗ trợ lập index âm. Index âm bắt đầu từ cuối bộ. Đôi khi có thể thuận tiện hơn khi sử dụng lập index âm để lấy mục cuối cùng trong một tuple vì bạn không cần phải biết chiều dài của một tuple để truy cập vào mục cuối cùng.

Hướng dẫn python tuple methods - phương pháp tuple python

# print last item in the tuple
print(z[-1])

3. Cắt Tuple

Slices trả về một tuple mới có chứa các mục được yêu cầu. Slices là cách tốt để có được một tập hợp con các giá trị trong tuple của bạn. Đối với mã ví dụ bên dưới, nó sẽ trả về một tuple với các mục từ index 0 trở lên và không bao gồm index 2.

Hướng dẫn python tuple methods - phương pháp tuple python

# Initialize a tuple
z = (3, 7, 4, 2)
# first index is inclusive (before the :) and last (after the :) is not.
print(z[0:2])
>>>(3,7)
# everything up to but not including index 3
print(z[:3])
>>> (3,7,4)
# You can even make slices with negative indexes.
print(z[-4:-1])
>>> (3,7,4)

4. Tuples là bất biến

Tuples là bất biến, điều đó có nghĩa là sau khi khởi tạo một tuple, không thể cập nhật các mục riêng lẻ trong một bộ. Như bạn có thể thấy trong đoạn mã bên dưới, bạn không thể cập nhật hoặc thay đổi giá trị của các mục tuple (điều này khác với list Python có thể thay đổi). Mặc dù các tuple là bất biến, có thể lấy các phần của tuple hiện có để tạo tuple mới như ví dụ sau đây minh họa.

Hướng dẫn python tuple methods - phương pháp tuple python
Mặc dù các tuple là bất biến, có thể lấy các phần của tuple hiện có để tạo tuple mới như ví dụ sau đây minh họa.
Hướng dẫn python tuple methods - phương pháp tuple python

5. Tuple Methods

Hướng dẫn python tuple methods - phương pháp tuple python
Trước khi bắt đầu phần này, trước tiên, hãy khởi động một tuple.

# Initialize a tuple
animals = ('lama', 'sheep', 'lama', 48)
  • index method: trả về giá trị xuất hiện đầu tiên
print(animals.index('lama'))
>>> 0 
  • count method: trả về số lần xuất hiện giá trị
print(animals.count('lama'))
>>> 2

6. Advantages of Tuples over Lists

List và tuple là các loại dữ liệu Python tiêu chuẩn lưu trữ các giá trị theo một chuỗi. Một tuple là bất biến trong khi một list là có thể thay đổi. Dưới đây là một số lợi thế khác của tuple trên danh sách (một phần từ Stack Overflow)

  • Tuples nhanh hơn danh sách: Nếu bạn xác định một tập hợp các giá trị không đổi và tất cả những gì bạn sẽ làm với nó là lặp lại thông qua nó, hãy sử dụng một tuple thay vì một danh sách. Sự khác biệt hiệu suất có thể được đo một phần bằng thư viện timeit cho phép bạn định thời gian mã Python của mình. Mã dưới đây chạy mã cho mỗi cách tiếp cận 1 triệu lần và xuất ra tổng thời gian cần thiết trong vài giây.

Hướng dẫn python tuple methods - phương pháp tuple python

Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Dẫn nhập KIỂU DỮ LIỆU TUPLE trong Python


Trong các bài trước, Kteam đã giới thiệu đến bạn KIỂU DỮ LIỆU LIST, một container tuyệt vời trong Python

Ở bài này Kteam sẽ giới thiệu tới bạn một container khác đó chính KIỂU DỮ LIỆU TUPLE trong Python

  • Nội dung
  • Để đọc hiểu bài này tốt nhất bạn cần:
  • Cài đặt sẵn MÔI TRƯỜNG PHÁT TRIỂN CỦA PYTHON.
  • Xem qua bài CÁCH CHẠY CHƯƠNG TRÌNH PYTHON.
  • Nắm CÁCH GHI CHÚ và BIẾN TRONG PYTHON.

KIỂU DỮ LIỆU SỐ và KIỂU DỮ LIỆU CHUỖI trong Python.

  • KIỂU DỮ LIỆU LIST trong Python
  • Bạn và Kteam sẽ cùng tìm hiểu những nội dung sau đây
  • Giới thiệu về Tuple trong Python.
  • Cách khởi tạo Tuple.
  • Một số toán tử với Tuple trong Python.
  • Indexing và cắt Tuple trong Python.
  • Thay đổi nội dung Tuple trong Python.
  • Ma trận.
  • .index(sub[, start[, end]])

Công dụng: Tương tự phương thức index của kiểu dữ liệu chuỗi.

Khi nào thì chọn Tuple thay cho List? là một container cũng được sử dụng rất nhiều trong các chương trình Python không thua kém gì List. (List đã được giới thiệu trong bài KIỂU DỮ LIỆU LIST TRONG PYTHON)

Một Tuple gồm các yếu tố sau:

  • Được giới hạn bởi cặp ngoặc (), tất cả những gì nằm trong đó là những phần tử của Tuple.(), tất cả những gì nằm trong đó là những phần tử của Tuple.
  • Các phần tử của Tuple được phân cách nhau ra bởi dấu phẩy (,).,).
  • Tuple có khả năng chứa mọi giá trị, đối tượng trong Python.

Ví dụ:

# Way 2
emptyTuple = tuple()
0

Cách khởi tạo Tuple

Sử dụng cặp  dấu ngoặc () và đặt giá  trị bên trong

Cú pháp:

(, , .., , )

Ví dụ:

# Way 2
emptyTuple = tuple()
1

Cách khởi tạo Tuple

# Way 2
emptyTuple = tuple()
2

Sử dụng cặp  dấu ngoặc () và đặt giá  trị bên trong

  • Cú pháp:

(, , .., , )

  • Bạn hãy chú ý khi khởi tạo tuple với một giá trị.
# Way 2
emptyTuple = tuple()
3

Vì sao khi khởi tạo một Tuple với một phần tử thì kiểu kiểu dữ liệu của Tuple đó lại là kiểu dữ liệu của phần tử duy nhất đó?

# Way 2
emptyTuple = tuple()
4

Đó là do khi bạn viết một giá trị nào đó đặt trong cặp dấu ngoặc đơn thì nó được xem là một giá trị.

Vì sao lại phải xem là một giá trị?

# Way 2
emptyTuple = tuple()
5

Vì khi ta tính toán, hay sử dụng cặp ngoặc () để được ưu tiên.Generator Expression (Kteam sẽ giới thiệu trong tương lai).

Thế nên, trường hợp đó không thể tính là một Tuple. Do đó, khi muốn khởi tạo một Tuple chỉ duy nhất một phần tử, ta phải thêm dấu `,` vào sau giá trị đó, để báo cho Python biết, đây là Tuple.


Sử dụng Tuple Comprehension

Cú pháp:

tuple(iterable)iterable)

(, , .., , ) Giống hoàn toàn với việc bạn sử dụng constructor List. Khác biệt duy nhất là constructor Tuple sẽ tạo ra một Tuple.

# Way 2
emptyTuple = tuple()
6

Bạn hãy chú ý khi khởi tạo tuple với một giá trị.

Vì sao khi khởi tạo một Tuple với một phần tử thì kiểu kiểu dữ liệu của Tuple đó lại là kiểu dữ liệu của phần tử duy nhất đó?hash object (immutable như chuỗi, Tuple) và unhash object (mutable như List)

Đó là do khi bạn viết một giá trị nào đó đặt trong cặp dấu ngoặc đơn thì nó được xem là một giá trị.

# Way 2
emptyTuple = tuple()
7

Vì sao lại phải xem là một giá trị?

# Way 2
emptyTuple = tuple()
8

Vì khi ta tính toán, hay sử dụng cặp ngoặc () để được ưu tiên.

# Way 2
emptyTuple = tuple()
9

Thế nên, trường hợp đó không thể tính là một Tuple. Do đó, khi muốn khởi tạo một Tuple chỉ duy nhất một phần tử, ta phải thêm dấu `,` vào sau giá trị đó, để báo cho Python biết, đây là Tuple.

Sử dụng Tuple Comprehension

Với Tuple thì khái niệm Comprehension này không được áp dụng

Mà đó được coi là Generator Expression (Kteam sẽ giới thiệu trong tương lai).

Đối tượng được tạo từ Generator Expression cũng là một dạng iterable.hash object (immutable). Do đó việc bạn muốn thay đổi nội dung của nó trên lí thuyết là không.

# way 1
z = (3, 7, 4, 2)
# way 2 (tuples can also can be created without parenthesis)
z = 3, 7, 4, 2
1

Sử dụng constructor Tuple


Công dụng: Giống hoàn toàn với việc bạn sử dụng constructor List. Khác biệt duy nhất là constructor Tuple sẽ tạo ra một Tuple.

Một số toán tử với Tuple trong Python

# way 1
z = (3, 7, 4, 2)
# way 2 (tuples can also can be created without parenthesis)
z = 3, 7, 4, 2
2

Các toán tử của Tuple giống với toán tử của chuỗi. Nếu bạn đọc kĩ phần này ở bài List thì bạn sẽ thấy Kteam đề cập là toán tử của List chỉ là gần giống với toán tử của chuỗi. Lí do vì sao sẽ được giải thích trong bài sự khác biệt các toán tử của hash object (immutable như chuỗi, Tuple) và unhash object (mutable như List)

Toán tử +hash object là một đối tượng bạn không thể thay đổi nội dung của nó. Và trong phần thay đổi nội dung Tuple, bạn cũng thấy ta không thể thay đổi giá trị ở bên trong Tuple. Tuy nhiên, không phải lúc nào cũng vậy.

# way 1
z = (3, 7, 4, 2)
# way 2 (tuples can also can be created without parenthesis)
z = 3, 7, 4, 2
3

Toán tử *unhash object. Suy ra, ta có thể thay đổi nội dung của nó.

# way 1
z = (3, 7, 4, 2)
# way 2 (tuples can also can be created without parenthesis)
z = 3, 7, 4, 2
4

Toán tử in

Indexing và cắt Tuple trong Python


Indexing và cắt Tuple hoàn toàn tương tự như với kiểu dữ liệu List. (Nếu chưa biết về List bạn có thể tham khảo qua các bài về KIỂU DỮ LIỆU LIST TRONG PYTHON)

# way 1 z = (3, 7, 4, 2) # way 2 (tuples can also can be created without parenthesis) z = 3, 7, 4, 2 0

Cú pháp:

.count(value).count(value)

(, , .., , ) Trả về một số nguyên, chính là số lần xuất hiện của value trong Tuple.

# way 1
z = (3, 7, 4, 2)
# way 2 (tuples can also can be created without parenthesis)
z = 3, 7, 4, 2
5

Bạn hãy chú ý khi khởi tạo tuple với một giá trị.

Cú pháp:

(, , .., , ).index(sub[, start[, end]])

Bạn hãy chú ý khi khởi tạo tuple với một giá trị.Tương tự phương thức index của kiểu dữ liệu chuỗi.

# way 1
z = (3, 7, 4, 2)
# way 2 (tuples can also can be created without parenthesis)
z = 3, 7, 4, 2
6

Vì sao khi khởi tạo một Tuple với một phần tử thì kiểu kiểu dữ liệu của Tuple đó lại là kiểu dữ liệu của phần tử duy nhất đó?

Đó là do khi bạn viết một giá trị nào đó đặt trong cặp dấu ngoặc đơn thì nó được xem là một giá trị.

  • Vì sao lại phải xem là một giá trị?của Tuple nhanh hơn so với List
  • Vì khi ta tính toán, hay sử dụng cặp ngoặc () để được ưu tiên. chiếm trong bộ nhớ của Tuple nhỏ hơn so với List
  • Thế nên, trường hợp đó không thể tính là một Tuple. Do đó, khi muốn khởi tạo một Tuple chỉ duy nhất một phần tử, ta phải thêm dấu `,` vào sau giá trị đó, để báo cho Python biết, đây là Tuple.
  • Sử dụng Tuple Comprehension

Với Tuple thì khái niệm Comprehension này không được áp dụng


Mà đó được coi là Generator Expression (Kteam sẽ giới thiệu trong tương lai).

Đối tượng được tạo từ Generator Expression cũng là một dạng iterable.

Sử dụng constructor Tuple

  1. Công dụng: Giống hoàn toàn với việc bạn sử dụng constructor List. Khác biệt duy nhất là constructor Tuple sẽ tạo ra một Tuple.IndexError
# way 1
z = (3, 7, 4, 2)
# way 2 (tuples can also can be created without parenthesis)
z = 3, 7, 4, 2
7
  1. Một số toán tử với Tuple trong Python
# way 1
z = (3, 7, 4, 2)
# way 2 (tuples can also can be created without parenthesis)
z = 3, 7, 4, 2
8

Các toán tử của Tuple giống với toán tử của chuỗi. Nếu bạn đọc kĩ phần này ở bài List thì bạn sẽ thấy Kteam đề cập là toán tử của List chỉ là gần giống với toán tử của chuỗi. Lí do vì sao sẽ được giải thích trong bài sự khác biệt các toán tử của hash object (immutable như chuỗi, Tuple) và unhash object (mutable như List)

  1. Toán tử +
    1. Toán tử *
    2. Toán tử in
    3. Indexing và cắt Tuple trong Python
    4. Indexing và cắt Tuple hoàn toàn tương tự như với kiểu dữ liệu List. (Nếu chưa biết về List bạn có thể tham khảo qua các bài về KIỂU DỮ LIỆU LIST TRONG PYTHON)
  1. # way 1
    z = (3, 7, 4, 2)
    # way 2 (tuples can also can be created without parenthesis)
    z = 3, 7, 4, 2
    
    0
# way 1
z = (3, 7, 4, 2)
# way 2 (tuples can also can be created without parenthesis)
z = 3, 7, 4, 2
9

Thay đổi nội dung Tuple trong Python

  1. tup = (1, 2, [3, 4, 50, 60])
  2. TypeError: ‘tuple’ object does not support item assignment
  3. a và b đúng

Đáp án của phần này sẽ được trình bày ở bài tiếp theo. Tuy nhiên, Kteam khuyến khích bạn tự trả lời các câu hỏi để củng cố kiến thức cũng như thực hành một cách tốt nhất! 


Kết luận

Bài viết này đã sơ lược cho các bạn KIỂU DỮ LIỆU TUPLE TRONG PYTHON.

Ở bài sau, Kteam sẽ nói về sự khác nhau giữa toán tử ở HASH OBJECT VÀ UNHASH OBJECT.

Cảm ơn bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.Luyện tập – Thử thách – Không ngại khó”.


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.