Python dainganxanh
  • Lời nói đầu
  • Chương I. SƠ LƯỢC
    • Bài 1. Cài đặt môi trường
    • Bài 2. Từ khóa và định danh
    • Bài 3. Câu lệnh, khối lệnh và chú thích
    • Bài 4. Nhập, xuất dữ liệu
    • Bài 5. Toán tử và lệnh gán
    • Bài 6. Biến, Hằng
    • Bài 7. Kiểu dữ liệu
    • Bài 8. Thao tác với tệp (cơ bản)
    • Bài 9. Tổng quan về Python
    • Bài tập chương 1
  • Chương II. RẼ NHÁNH - LẶP
    • Bài 10. Cấu trúc rẽ nhánh if…else
    • Bài 11. Cấu trúc lặp với for
    • Bài 12. Cấu trúc lặp với while
    • Bài 13. Lệnh break và continue
    • Bài tập chương 2
  • Chương III. HÀM & MODULE
    • Bài 14. Hàm
    • Bài 15. Tham số hàm
    • Bài 16. Đệ quy
    • Bài 17. Hàm ẩn danh
    • Bài 18. Biến toàn cục và cục bộ
    • Bài 19. Module
    • Bài 20. Package
  • Chương IV. KIỂU DỮ LIỆU
    • Bài 21. Dữ liệu kiểu số
    • Bài 22. Dữ liệu kiểu string
    • Bài 23. Dữ liệu kiểu list
    • Bài 24. Dữ liệu kiểu tuple
    • Bài 25. Dữ liệu kiểu set
    • Bài 26. Dữ liệu kiểu dictionary
  • Chương V. TỆP & THƯ MỤC
    • Bài 27. Đọc và ghi file
    • Bài 28. Quản lý file và folder
  • Chương VI. LỖI & NGOẠI LỆ
    • Bài 29. Ngoại lệ
    • Bài 30. Xử lý ngoại lệ
    • Bài 31. Xây dựng ngoại lệ
  • Chương VII. HƯỚNG ĐỐI TƯỢNG
    • Bài 32. Lập trình hướng đối tượng
    • Bài 33. Đối tượng và Lớp
    • Bài 34. Kế thừa
    • Bài 35. Đa kế thừa
    • Bài 36. Nạp chồng toán tử
  • Chương VIII. NGÀY - GIỜ
    • Python datetime
    • Python strftime()
    • Python strptime()
    • Current date and time
    • Get Current time
    • Timestamp to datetime
    • Python time Module
    • Python sleep()
  • Chương IX. CHỦ ĐỀ NÂNG CAO
    • Python Iterators
    • Python Generators
    • Python Closures
    • Python Decorators
    • Python @property decorator
    • Python RegEx
    • Python Examples
  • PHỤ LỤC - GHI CHÉP
    • Hàm map()
    • Cài Sublime Text để code Python
    • Ghi chép - ghi chú
    • Mảng 2 chiều
    • Công thức với dãy số
  • Tài liệu tham khảo
  • www.dainganxanh.com
  • 🐍Khóa học Python
  • 🤷‍♀️Hỏi đáp, chia sẻ (FG)
  • 🎮Sinh Test chấm Themis
Powered by GitBook
On this page
  • Khởi tạo tuple
  • Truy cập phần tử tuple
  • Cắt tuple
  • Thêm, sửa, xóa phần tử tuple
  • Thêm
  • Sửa
  • Xóa
  • Phương thức (tuple method)
  • Thao tác khác
  • Kiểm tra phần tử chứa trong tuple
  • Lặp theo phần tử tuple
  • Khi nào dùng tuple thay vì list?

Was this helpful?

  1. Chương IV. KIỂU DỮ LIỆU

Bài 24. Dữ liệu kiểu tuple

Tuple trong Python tương tự như list. Sự khác biệt giữa hai kiểu dữ liệu này là tuple không thể thay đổi các phần tử khi nó đã được gán còn list thì có thể thay đổi.

Khởi tạo tuple

mb = ()    # tuple rỗng
print(mb)

mb = (1, 2, 3)    # tuple các số nguyên
print(mb)

mb = (1, "Hello", 3.4)    # tuple hỗn hợp
print(mb)

mb = ("mouse", [8, 4, 6], (1, 2, 3))     # tuple lồng nhau
print(mb)

Ta có thể gán phần tử cho tuple mà không cần dùng dấu ngoặc đơn.

mb = 1, 2, 3
a,b,c = mb

print(a)    # 1
print(b)    # 2
print(c)    # 3

print(mb)     # (1, 2, 3)

Lưu ý khi khởi tạo tuple chỉ có một phần tử phải đặt dấu phẩy sau phần tử nếu không Python sẽ nhận diện đó là một str.

mb = ("hello")
print(type(mb))  # <class 'str'> 

mb = ("hello",)
print(type(mb))  # <class 'tuple'>

# Parentheses is optional
mb = "hello",
print(type(mb))  # <class 'tuple'>

Truy cập phần tử tuple

Ta sử dụng chỉ số trong cặp ngoặc [] để truy cập phần tử tuple. Chỉ số các phần tử trong tuple bắt đầu từ 0 và chiều ngược lại bắt đầu từ -1.

Việc truy cập phần tử tuple cũng tương tự như truy cập phần tử list. Ví dụ:

mt = ('P', 'y', 't', 'h', 'o', 'n', '3')

print(mt[1])   # y
print(mt[5])   # n
print(mt[-6])  # y

# tuple lồng nhau
mm = ("mouse", [8, 4, 6], (1, 2, 3))
print(mm[0][3])       # 's'
print(mm[1][1])       # 4    

Cắt tuple

mt = ('P', 'y', 't', 'h', 'o', 'n', '3')

print(mt[1:4])    # ('y', 't', 'h')
print(mt[:-6])    # ('P',)
print(mt[6:])     # ('3',)
print(mt[:])      # ('P', 'y', 't', 'h', 'o', 'n', '3')

print(mt[::-1])    # ('3', 'n', 'o', 'h', 't', 'y', 'P')

Thêm, sửa, xóa phần tử tuple

Thêm

Khác với list, tuple không cho phép thay đổi giá trị phần tử.

Để thêm phần tử vào tuple ta có thể dùng toán tử cộng + để nối tuple; toán tử * để nhân tuple. Ví dụ:

a = (1, 2, 3)
aa = a + (4, 5, 6)
print(aa)             # (1, 2, 3, 4, 5, 6)

aaa = a*2
print(aaa)            # (1, 2, 3, 1, 2, 3)

Sửa

Như định nghĩa ban đầu, tuple không cho phép sửa đổi phần tử khi đã gán.

Tuy nhiên, nếu phần tử của tuple ở dạng list thì ta vẫn có thể can thiệp vào phần tử của list.

Một cách khác để sửa phần tử tuple là gán cho biến tuple một tập giá trị mới.

Ví dụ:

mt = (4, 2, 3, [6, 5])

mt[3][0] = 9
print(mt)                # (4, 2, 3, [9, 5])

mt = (4, 6, 8, [6, 5])
print(mt)                # (4, 6, 8, [6, 5])

Xóa

Tuple không xóa được từng phần tử mà chỉ có thể xóa hoàn toàn biến tuple

mt = ('P', 'y', 't', 'h', 'o', 'n', '3')
del mt
print(mt)     # báo lỗi: NameError: name 'mt' is not defined

Phương thức (tuple method)

Khác với list, tuple chỉ có 2 phương thức hoạt động đó là count() và index(). Ví dụ:

mt= ('a', 'p', 'p', 'l', 'e',)

print(mt.count('p'))  # Output: 2
print(mt.index('l'))  # Output: 3

Thao tác khác

Kiểm tra phần tử chứa trong tuple

mt = ('P', 'y', 't', 'h', 'o', 'n', '3')

print('t' in mt)        # True
print('z' in mt)        # False
print('g' not in mt)    # True

Lặp theo phần tử tuple

mt = ('xanh', 'đỏ', 'tím', 'vàng')

for x in mt:
    print("Tôi thích màu", x)

Output: Tôi thích màu xanh Tôi thích màu đỏ Tôi thích màu tím Tôi thích màu vàng

Khi nào dùng tuple thay vì list?

  • Thường ta nên dùng list cho dữ liệu đồng nhất (cùng kiểu) và dùng tuple cho dữ liệu không đồng nhất.

  • Truy xuất phần tử tuple nhanh hơn list nên hiệu suất tốt hơn (chỉ đáng kể với dữ liệu lớn).

  • Tuple có thể dùng làm key cho dict. list thì không.

  • Nếu dữ liệu cần được đảm bảo không thay đổi thì tuple là lựa chọn (phần tử của tuple không thể thay đổi).

PreviousBài 23. Dữ liệu kiểu listNextBài 25. Dữ liệu kiểu set

Last updated 4 years ago

Was this helpful?