Các bộ trong Python thường được sử dụng cho hai mục đích. 1. Xóa các mục trùng lặp trong bộ sưu tập 2. Đối với thử nghiệm thành viên. Theo tư cách thành viên, ở đây chúng tôi muốn tìm sự tồn tại của phần tử trong một bộ sưu tập Trọng tâm của bài đăng này là đánh giá hiệu suất của danh sách, bộ dữ liệu và cấu trúc dữ liệu thiết lập đối với nhau trên cơ sở kiểm tra tư cách thành viên. Tôi phải làm nó như thế nào? . bắt đầu = ngày giờ. now() nếu dữ liệu ở dạng. in "" end = datetime. now() print end-start calc(9999, listA) calc(9999, tupA) calc(9999, setA) [/sourcecode] Dưới đây là thời gian trung bình của 10 lần lặp cho danh sách/bộ và bộ để kiểm tra tư cách thành viên của . 8 0. 8 1. 9 Tìm kiếm 99999 trong bộ 10000000 bộ 2. 6 2. 8 1. 7 Tìm kiếm 999999 trong bộ danh sách 10000000 bộ 21. 4 21. 6 0. 8 Kết luận 1. để kiểm tra tư cách thành viên của các phần tử khi bắt đầu bộ sưu tập, danh sách hoặc bộ dữ liệu hoạt động tốt hơn 100% so với bộ 2. Ngay khi bạn bắt đầu kiểm tra tư cách thành viên của các phần tử ở giữa hoặc cuối tập hợp, các bộ hoạt động tốt hơn 40% – 1800% so với danh sách hoặc bộ. Bây giờ bạn đã có một ý tưởng hợp lý tại sao bạn nên nghĩ đến việc sử dụng các bộ cho các bộ sưu tập lớn… Trong Python, có bốn kiểu 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 những phẩm chất và đặc điểm khác nhau, các kiểu dữ liệu dựng sẵn này là List (danh sách), Tuple (tuple), Set (bộ) và Dictionary (dict) Show
Trong bài viết này, chúng ta sẽ tìm hiểu sâu về List, Tuple và Set trong Python. Chúng tôi sẽ xem xét 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à trường hợp sử dụng rất khác so với Danh sách, Bộ và Tập hợp (chỉ đơn giản là chứa các giá trị), nó sẽ không nằm trong cuộc thảo luận này Để đơn giản, tôi sẽ sử dụng Set và Dictionary thay thế cho nhau, vì chúng dựa trên Hash Table (hoặc Hash Map) Các kiểu dữ liệu tích hợp sẵn của Python để lưu trữ các bộ sưu tập dữ liệuTại sao chúng ta quan tâm?Phần lớn, các kiểu 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 nhiệm vụ kiểm tra xem có một cây kim nào tồn tại trong một đống cỏ khô lớn 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 không? Nào cùng đào vào bên trong Sự khác biệt giữa Danh sách, Tuple và Settrùng lặpNếu tôi giải thích điều này, List và Tuple giống như anh em ruột trong Python. Mặt khác, Bộ (hoặc Từ điển) giống như anh em họ của cả hai Không giống như Danh sách hoặc Tuple, Tập hợp không thể chứa các bản sao. Nói cách khác, các phần tử trong Set là duy nhất
Với kiến thức này, giờ đây chúng ta biết rằng Set cũng có thể được sử dụng để xóa các mục trùng lặp khỏi danh sách Gọi mónBạn có thể đã nghe tuyên bố “Bộ và Từ điển không được sắp xếp theo thứ tự trong Python. ” Chà, đó chỉ là một nửa sự thật ngày nay, tùy thuộc vào phiên bản Python 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 chúng. Đây là một ví dụ nếu bạn dùng thử trong Python 3. 5
Bạn có thể dễ dàng chuyển sang các phiên bản Python khác nhau bằng pyenv. dùng thử Hôm nay, tuyên bố đó đã lỗi thời trong một vài năm. Bắt đầu từ Python 3. 7, Từ điển và Bộ được sắp xếp chính thức theo thời điểm chèn Dù sao, trong trường hợp bạn thắc mắc, Danh sách và Tuple là các chuỗi đối tượng được sắp xếp theo thứ tự khả năng biến đổiKhi bạn mô tả một đối tượng là có thể thay đổi, đó chỉ đơn giản là một cách thú vị để nói trạng thái bên trong của đối tượng có thể 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ù Bộ có thể thay đổi, nhưng chúng tôi không thể truy cập hoặc thay đổi bất kỳ phần tử nào của Bộ thông qua lập chỉ mục hoặc cắt. Do đó, chúng ta chỉ có thể thêm các phần tử mới vào một tập hợp — không thể thay đổi chúng Xin lưu ý rằng phương thức cập nhật trong Tập hợp chỉ đơn giản có nghĩa là khả năng thêm nhiều phần tử cùng một lúc lập chỉ mụcCả Tuple và List đều hỗ trợ lập chỉ mục và cắt, trong khi Set thì không
Khi nào nên sử dụng Danh sách so với. Tuple?Như chúng tôi đã đề cập trước đó, Bộ dữ liệu là bất biến, trong khi Danh sách có thể thay đổi. Tương tự như vậy, Tuples có kích thước cố định về bản chất, trong khi Lists là động
Sử dụng danh sách
Sử dụng Tuple
Khi nào nên sử dụng Set so với. Danh sách/Tuple?Vì Set sử dụng Bảng băm làm cấu trúc dữ liệu cơ bản nên Set rất nhanh khi kiểm tra xem một phần tử có nằm trong nó không (e. g. Ý tưởng đằng sau nó là việc tra cứu một mục trong bảng băm là thao tác O(1) (thời gian không đổi) "Vậy, tôi nê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 List. Giai đoạn = Stage Tóm lượcCác bài học chính là gì?
Nếu bạn là một người đam mê số như tôi, hãy xem điều này khi bạn đang 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 hay không Tại sao được thiết lập nhanh hơn nhiều so với danh sách?Các tập hợp không được chứa các mục trùng lặp và chúng sẽ tự biến mất. Bộ sử dụng hàm băm để thực hiện tra cứu , điều này giúp chúng nhanh hơn nhiều so với danh sách về mặt này. (Trong ví dụ thực tế, mã sử dụng danh sách mất khoảng 45 giây để chạy, trong khi mã sử dụng bộ chỉ mất chưa đến 1/10 giây. )
Bộ tra cứu có nhanh hơn danh sách Python không?Danh sách nhanh hơn một chút so với tập hợp khi bạn chỉ muốn lặp lại các giá trị. Tuy nhiên, tập hợp nhanh hơn đáng kể so với danh sách nếu bạn muốn kiểm tra xem một mục có chứa trong đó hay không .
Tại sao set tốt hơn list trong Python?Ưu điểm của bộ Python
. Because sets cannot have multiple occurrences of the same element, it makes sets highly useful to efficiently remove duplicate values from a list or tuple and to perform common math operations like unions and intersections.
Việc lặp qua một tập hợp có nhanh hơn một danh sách không?bộ lặp
. Các bộ không có mục nào được liên kết nên một lần lặp không thể dễ dàng chuyển sang mục "tiếp theo" giống như một danh sách |