Hướng dẫn when should i use a tuple in python? - khi nào tôi nên sử dụng tuple trong python?

Điều đầu tiên bạn cần quyết định là liệu cấu trúc dữ liệu có cần thay đổi hay không. Như đã được đề cập, danh sách là có thể thay đổi, bộ dữ liệu thì không. Điều này cũng có nghĩa là các bộ dữ liệu có thể được sử dụng cho các khóa từ điển, danh sách trong số đó không thể.

Theo kinh nghiệm của tôi, các bộ dữ liệu thường được sử dụng ở nơi trật tự và vị trí có ý nghĩa và nhất quán. Ví dụ: trong việc tạo cấu trúc dữ liệu cho một trò chơi phiêu lưu chọn của riêng bạn, tôi đã chọn sử dụng các bộ dữ liệu thay vì danh sách vì vị trí trong bộ tu có ý nghĩa. Dưới đây là một ví dụ từ cấu trúc dữ liệu đó:

pages = {'foyer': {'text' : "some text", 
          'choices' : [('open the door', 'rainbow'),
                     ('go left into the kitchen', 'bottomless pit'),
                     ('stay put','foyer2')]},}

Vị trí đầu tiên trong tuple là sự lựa chọn được hiển thị cho người dùng khi họ chơi trò chơi và vị trí thứ hai là chìa khóa của trang mà lựa chọn đi đến và điều này phù hợp cho tất cả các trang.

Tuples cũng hiệu quả hơn về bộ nhớ so với danh sách, mặc dù tôi không chắc khi nào lợi ích đó trở nên rõ ràng.

Đồng thời kiểm tra các chương trong danh sách và bộ dữ liệu trong Think Python.

Trong Python, có bốn loại dữ liệu tích hợp mà chúng ta có thể sử dụng để lưu trữ các bộ sưu tập dữ liệu. Với các phẩm chất và đặc điểm khác nhau, các loại dữ liệu tích hợp này là danh sách (danh sách), tuple (tuple), set (set) và từ điển (dict).

Trong bài viết này, chúng tôi sẽ đào sâu vào các lỗ thỏ của danh sách, tuple và đặt trong Python. Chúng tôi sẽ trải qua sự khác biệt của chúng và khi nào nên sử dụng các loại dữ liệu này.

Vì từ điển liên kết các khóa với các giá trị tương ứng của chúng, đây là một trường hợp sử dụng rất khác so với danh sách, tuple và set (chỉ đơn giản là chứa các giá trị), nó đã giành được một phần của cuộc thảo luận này.

Để đơn giản, tôi sẽ sử dụng tập hợp và từ điển có thể thay thế cho nhau, vì chúng dựa trên bảng băm (hoặc bản đồ băm).

Hướng dẫn when should i use a tuple in python? - khi nào tôi nên sử dụng tuple trong python?
Các loại dữ liệu tích hợp Python để lưu trữ bộ sưu tập dữ liệu

Tại sao chúng ta quan tâm?

Đối với hầu hết các phần, các loại dữ liệu này có thể được sử dụng thay thế cho nhau trong một ứng dụng mà không gặp nhiều rắc rối.

Tuy nhiên, hãy tưởng tượng nếu chúng ta được giao một nhiệm vụ để kiểm tra xem một cây kim có tồn tại trong một đống cỏ khô khá hay không. Điều gì sẽ là cách hiệu quả nhất về tốc độ và bộ nhớ để làm như vậy?

Haystack có nên là một danh sách? Còn một tuple thì sao? Hoặc tại sao không luôn luôn sử dụng một bộ (hoặc từ điển)? Những cảnh báo mà chúng ta nên tìm kiếm là gì?

Nào cùng đào vào bên trong!


Sự khác biệt giữa danh sách, tuple và set

Sao chép

Nếu tôi giải thích điều này, danh sách và tuple giống như anh chị em trong Python. Mặt khác, đặt (hoặc từ điển) giống như một người anh em họ của cả hai.

Không giống như danh sách hoặc tuple, một bộ không thể chứa các bản sao. Nói cách khác, các yếu tố trong một bộ là duy nhất.

set_example = {1, 1, 2, 3, 3, 3}
# {1, 2, 3}

fruit_set = {'🍎', '🍓', '🍐', '🍎', '🍎', '🍓'}
# {'🍎', '🍐', '🍓'}

Với kiến ​​thức này trong tâm trí, bây giờ chúng ta biết rằng bộ cũng có thể được sử dụng để loại bỏ các bản sao khỏi danh sách!

Gọi món

Bạn có thể đã nghe tuyên bố Set Set và Dictionary không được đặt hàng trong Python. Chà, đó chỉ là một nửa sự thật ngày hôm nay, tùy thuộc vào phiên bản Python mà bạn đang sử dụng.

Trước Python 3.6, từ điển và bộ không giữ thứ tự chèn của họ. Dưới đây, một ví dụ nếu bạn dùng thử trong Python 3.5:

# Example in Python 3.5

fruit_size = {} 
>>> fruit_size['🍎'] = 12 
>>> fruit_size['🍐'] = 16 
>>> fruit_size['🍇'] = 20 
>>> fruit_size
{'🍎': 12, '🍇': 20, '🍐': 16}
Bạn có thể dễ dàng chuyển sang các phiên bản Python khác nhau bằng PyenV. Hãy thử nó ra!

Hôm nay, tuyên bố đó đã lỗi thời một vài năm. Bắt đầu từ Python 3.7, từ điển và bộ được đặt chính thức theo thời gian chèn.

Dù sao, trong trường hợp bạn tự hỏi, danh sách và tuple được đặt hàng các chuỗi đối tượng.

Tính đột biến

Khi bạn mô tả một đối tượng là có thể thay đổi, nó chỉ đơn giản là một cách nói lạ mắt để nói trạng thái bên trong của đối tượng có thể được thay đổi.

Sự khác biệt chính ở đây là tuple là bất biến (không thể thay đổi), trong khi danh sách và tập hợp có thể thay đổi.

Mặc dù các bộ có thể thay đổi, chúng tôi không thể truy cập hoặc thay đổi bất kỳ yếu tố nào của tập hợp thông qua lập chỉ mục hoặc cắt. Do đó, chúng ta chỉ có thể thêm các yếu tố mới vào một tập hợp - không thay đổi chúng.

Xin lưu ý rằng phương thức cập nhật trong một bộ chỉ đơn giản là khả năng thêm nhiều phần tử cùng một lúc.

Lập chỉ mục

Cả Tuple và Danh sách hỗ trợ lập chỉ mục và cắt, trong khi Set thì không.

fruit_list = ['🍎', '🍓', '🍐']
fruit_list[1]
# '🍓'

animal_tuple = ('🐶', '🐱', '🐮')
animal_tuple[2]
# '🐮'

vehicle_set = {'🚐', '🏍', '🚗'}
vehicle_set[0]
# TypeError: 'set' object is not subscriptable

Khi nào nên sử dụng danh sách so với tuple?

Như chúng tôi đã đề cập trước đó, các bộ dữ liệu là bất biến, trong khi danh sách là có thể thay đổi. Tương tự như vậy, các bộ dữ liệu có kích thước cố định trong tự nhiên, trong khi danh sách là động.

a_tuple = tuple(range(1000))
a_list = list(range(1000))
a_tuple.__sizeof__()  # 8024 bytes
a_list.__sizeof__()   # 9088 bytes

Danh sách sử dụng

  1. Khi bạn cần đột biến bộ sưu tập của bạn.
  2. Khi bạn cần xóa hoặc thêm các mục mới vào bộ sưu tập các mặt hàng của bạn.

Sử dụng tuple

  1. Nếu dữ liệu của bạn nên hoặc không cần phải thay đổi.
  2. Tuples nhanh hơn danh sách. Chúng ta nên sử dụng một tuple thay vì một danh sách nếu chúng ta xác định một tập hợp các giá trị không đổi và tất cả những gì chúng ta sẽ làm với nó là lặp đi lặp lại thông qua nó.
  3. Nếu chúng ta cần một loạt các phần tử được sử dụng làm khóa từ điển, chúng ta có thể sử dụng các bộ dữ liệu. Vì danh sách là có thể thay đổi (loại không thể không thể), chúng không bao giờ có thể được sử dụng làm khóa từ điển.

Khi nào nên sử dụng SET so với danh sách/tuple?

Khi SET sử dụng bảng Hash làm cấu trúc dữ liệu cơ bản của nó, SET đang phát sáng nhanh khi kiểm tra xem một phần tử có bên trong nó không (ví dụ: x in a_set).

Ý tưởng đằng sau nó là việc tìm kiếm một vật phẩm trong bảng băm là hoạt động O (1) (thời gian không đổi).

"Vì vậy, tôi nên luôn luôn sử dụng bộ hay từ điển?"

Về cơ bản, nếu bạn không cần lưu trữ các bản sao, Set sẽ tốt hơn danh sách. Giai đoạn = Stage.


Bản tóm tắt

Những điều cần thiết chính là gì?

  • Nếu bạn cần lưu trữ các bản sao, hãy truy cập danh sách hoặc tuple.
  • Đối với danh sách so với tuple, nếu bạn không có ý định đột biến, hãy đi cho tuple.
  • Nếu bạn không cần lưu trữ các bản sao, luôn luôn đi cho thiết lập hoặc từ điển. Các bản đồ băm nhanh hơn đáng kể khi xác định xem một đối tượng có mặt trong tập hợp không (ví dụ: x trong set_or_dict).

Nếu bạn là một người đam mê những con số như tôi, hãy xem so sánh tốc độ này giữa tuple, danh sách và đặt khi bạn lặp lại hoặc kiểm tra xem một đối tượng có mặt trong một bộ sưu tập không.

Cuối cùng, đối với hầu hết các phần, tôi nghĩ rằng chúng ta không nên lật đổ cấu trúc dữ liệu nào sẽ sử dụng.

Tối ưu hóa sớm là gốc rễ của mọi điều ác.

Bộ dữ liệu trong Python là gì?

Tuples in Python. Một tuple là một tập hợp các đối tượng Python được phân tách bằng dấu phẩy. Trong một số cách, một tuple tương tự như một danh sách về việc lập chỉ mục, các đối tượng lồng nhau và sự lặp lại nhưng một tuple là bất biến không giống như các danh sách có thể thay đổi. Tạo bộ dữ liệu. # Một tuple trống.

Tại sao không thể sử dụng các bộ đếm trong từ điển?

Một trong những khóa để sử dụng các bộ dữ liệu qua danh sách là danh sách không thể được sử dụng trong từ điển (vì danh sách là có thể thay đổi). Giữ một phút. Bạn nói đến từ điển này là gì? Một từ điển Python tương tự như một danh sách, trong đó nó là một tập hợp dữ liệu. Từ điển là triển khai Python của các mảng liên kết và sử dụng các cặp giá trị khóa như vậy: ...

Sự khác biệt giữa một danh sách và một tuple là gì?

Tính bất biến và khả năng đột biến của các bộ dữ liệu và danh sách không phải là sự khác biệt chính. Danh sách là một danh sách các loại mục tương tự: tệp, tên, đối tượng. Tuples là một nhóm các loại đối tượng khác nhau. Họ có những công dụng khác nhau và nhiều danh sách lạm dụng Python Coder cho những gì các bộ dữ liệu có nghĩa là gì. Xin đừng.

Có thể lặp lại một tuple trong Python không?

Như Zen of Python nói: Tính thực tế đánh bại sự thuần khiết. @Glenn, về cơ bản bạn đã sai. Một trong những cách sử dụng chính của các bộ dữ liệu là một loại dữ liệu tổng hợp để lưu trữ nhiều phần dữ liệu có liên quan. Việc bạn có thể lặp lại một tuple và thực hiện nhiều hoạt động tương tự không thay đổi điều này.

Khi nào một tuple nên được sử dụng thay vì một danh sách?

Bây giờ chúng ta đã biết sự khác biệt giữa các danh sách Python Tuples so với danh sách, nó không phải là một lựa chọn rất khó khăn giữa hai người. Sự khác biệt chính là một danh sách là có thể thay đổi, nhưng một tuple thì không. Vì vậy, chúng tôi sử dụng một danh sách khi chúng tôi muốn chứa các mục tương tự, nhưng sử dụng một bộ dữ liệu khi chúng tôi biết thông tin nào đi vào đó.when we know what information goes into it.

Tại sao tôi nên sử dụng Tuples?

Kiểu dữ liệu tuple là một loại dữ liệu được đặt hàng bất biến, cho phép bạn lưu trữ dữ liệu trong Python.Bộ dữ liệu có phần nhanh hơn để sử dụng so với danh sách trong Python vì chúng không thể thay đổi.Do đó, chúng hữu ích nếu bạn cần lưu trữ dữ liệu sẽ không thay đổi.if you need to store data that will not change.

Lợi ích của bộ dữ liệu trong Python là gì?

Ưu điểm của các bộ dữ liệu trong danh sách như sau: Bộ dữ liệu nhanh hơn danh sách.Tuples làm cho mã an toàn khỏi mọi sửa đổi tình cờ.Nếu một dữ liệu là cần thiết trong một chương trình không được thay đổi, thì tốt hơn là đặt nó vào 'Tuples' hơn là trong 'Danh sách'.Tuples are faster than lists. Tuples make the code safe from any accidental modification. If a data is needed in a program which is not supposed to be changed, then it is better to put it in 'tuples' than in 'list'.

Tôi nên sử dụng một tuple hay từ điển trong Python?

Sử dụng một tuple để lưu trữ một chuỗi các mục sẽ không thay đổi.Sử dụng một danh sách để lưu trữ một chuỗi các mục có thể thay đổi.Sử dụng một dict khi bạn muốn liên kết các cặp của hai mục.. Use a list to store a sequence of items that may change. Use a dict when you want to associate pairs of two items.