Trong bài viết này, chúng ta sẽ tìm hiểu cách kiểm tra tất cả các phần tử trong một danh sách có giống nhau hay không trong Python. Chúng tôi sẽ sử dụng một số chức năng tích hợp, thuật toán đơn giản và một số mã tùy chỉnh để hiểu rõ hơn về vấn đề. Trước tiên chúng ta hãy xem nhanh danh sách trong Python là gì Show
Danh sách PythonPython có một kiểu dữ liệu tích hợp được gọi là danh sách. Nó giống như một tập hợp các mảng với các phương pháp khác nhau. Dữ liệu bên trong danh sách có thể thuộc bất kỳ loại nào, chẳng hạn như số nguyên, chuỗi hoặc giá trị float hoặc thậm chí là loại danh sách. Danh sách sử dụng các giá trị được phân tách bằng dấu phẩy trong dấu ngoặc vuông để lưu trữ dữ liệu. Danh sách có thể được xác định bằng cách sử dụng bất kỳ tên biến nào và sau đó gán các giá trị khác nhau cho danh sách trong dấu ngoặc vuông. Danh sách được sắp xếp, có thể thay đổi và cho phép các giá trị trùng lặp
Python hỗ trợ nhiều hàm có sẵn để thực hiện tác vụ này. Chúng tôi sẽ xem xét các cách sau để chúng tôi có thể kiểm tra xem tất cả các phần tử có trong danh sách có bằng nhau hay không
Thí dụ. Kiểm tra tất cả Danh sách bằng cách Sử dụng hàm all()Ví dụ này sử dụng hàm 4 tích hợp. Đây là cách đơn giản và thanh lịch nhất để kiểm tra tình trạng nhưng chậm hơn một chút so với các chức năng khác. Hàm này thậm chí hoạt động với danh sách trống vì đây là một trong số ít trường hợp python có ngữ nghĩa lười biếng. Trong ví dụ đã cho, hàm all() trước tiên chuyển đổi danh sách đầu vào thành có thể lặp lại và sau đó so sánh từng phần tử của danh sách đã cho và kiểm tra xem chúng có bằng nhau hay không. Chương trình sẽ in 'Bằng' nếu tất cả các phần tử đều giống nhau, nó sẽ in 'Không bằng'
Thí dụ. Kiểm tra tất cả Danh sách bằng cách Sử dụng Hàm set()Ví dụ này sử dụng kiểu dữ liệu 5 Python tích hợp. Bộ không cho phép các phần tử trùng lặp. Nó cũng yêu cầu tất cả các yếu tố của bạn phải được băm. Sử dụng thuộc tính này của tập hợp, chúng ta có thể kiểm tra xem tất cả các phần tử trong danh sách có giống nhau hay không. Trong ví dụ này, danh sách được chuyển đổi thành một tập hợp bằng cách chuyển tên danh sách sang phương thức set() như bên dưới. Tập hợp sẽ kiểm tra từng phần tử và nếu tất cả các phần tử trong danh sách ban đầu giống hệt nhau thì tập hợp sẽ chỉ có một phần tử duy nhất. Chương trình sẽ trả về 'Không bằng' nếu danh sách của bạn có các phần tử khác, ngược lại, nó sẽ trả về 'Bằng'
Thí dụ. Kiểm tra tất cả Danh sách bằng cách sử dụng Hàm đếm ()Ví dụ này sử dụng hàm 0. Phương thức này nhanh hơn so với sử dụng set() vì phương thức set hoạt động theo trình tự, không lặp lại nhưng hàm count() chỉ đếm phần tử đầu tiên. Phương pháp này cần thực sự kiểm tra tất cả các yếu tố để có được số lượng chính xác. Hàm này giả sử danh sách là một danh sách không trống. Trong ví dụ này, hai hàm (đếm, len) được sử dụng và cả hai đều có cách thực hiện dễ dàngDo đó, nếu chúng ta có cùng một phần tử được lặp lại trong danh sách thì độ dài của danh sách khi sử dụng len() sẽ bằng số lần phần tử đó có mặt trong danh sách khi sử dụng hàm đếm()
Thí dụ. Kiểm tra tất cả Danh sách bằng cách Sử dụng Phương pháp Brute ForceThuật toán này sử dụng một mã dễ hiểu đơn giản để so sánh từng phần tử của danh sách bằng cách sử dụng vòng lặp for. Trong ví dụ này, phần tử đầu tiên của danh sách được lưu trữ trong một biến. Sau đó, sử dụng vòng lặp for, mỗi phần tử được so sánh với biến đầu tiên (phần tử đầu tiên) và nếu vòng lặp gặp cả hai phần tử không bằng nhau thì vòng lặp sẽ dừng và in 'Không bằng' khác nếu tất cả các phần tử bằng biến đầu tiên
Thí dụ. Kiểm tra tất cả Danh sách Bằng cách nhân các phần tửPhương pháp này là một phương pháp thay thế và nó nhanh hơn phương pháp thiết lập. Nó là mã một lớp. Trong ví dụ này, chương trình lấy phần tử đầu tiên và nhân nó với độ dài của danh sách đã cho để tạo thành một danh sách mới. Vì vậy, danh sách mới chứa các phần tử giống hệt với các phần tử đầu tiên của kích thước danh sách đã cho, sau đó so sánh nó với danh sách đã cho. Phương thức này trả về True nếu các phần tử bằng nhau, ngược lại Sai
Thí dụ. Kiểm tra tất cả Danh sách bằng cách Sử dụng phương pháp Cắt látVí dụ này sử dụng thao tác Cắt lát danh sách trong đó một danh sách được cắt lát tùy thuộc vào chỉ mục được truyền và một tập hợp con các giá trị được truy xuất. Trong ví dụ này, chúng tôi so sánh phần đầu của danh sách được ký hiệu là 1 với phần cuối của danh sách được ký hiệu là 2. Phương thức này trả về True nếu các phần tử bằng nhau, ngược lại Sai
Thí dụ. Kiểm tra tất cả Danh sách bằng cách Sử dụng Mô-đun itertoolsPhương pháp này sử dụng chức năng 3 từ mô-đun itertools. Chức năng này có một vài thuộc tính làm cho nó khác với các chức năng khác. Nó sẽ ngừng tiêu thụ các mục từ iterable ngay khi tìm thấy mục không bằng nhau đầu tiên. Nó không yêu cầu các mục phải được băm. Nó lười biếng và chỉ yêu cầu bộ nhớ bổ sung O(1) để thực hiện kiểm tra. Phương thức này trả về True nếu các phần tử bằng nhau, ngược lại Sai 1
Sự kết luậnTrong bài viết này, chúng ta đã học cách kiểm tra xem tất cả các phần tử trong danh sách có giống nhau hay không bằng cách sử dụng một số hàm có sẵn như 4, 3, 0 và các phương pháp thay thế khác. Chúng tôi cũng đã sử dụng một số mã tùy chỉnh. Chúng tôi đã tìm hiểu về sự khác biệt giữa các phương pháp này về tốc độ xử lý |