Làm cách nào để kiểm tra xem tất cả các phần tử trong một chuỗi có phải là cùng một con trăn không?

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ì

Danh sách Python

Python 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

list1 = ["Ram", "Arun", "Kiran"]
list2 = [16, 78, 32, 67]
list3 = ["apple", "mango", 16, "cherry", 3.4]

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

  1. Sử dụng hàm all()
  2. Sử dụng kiểu dữ liệu đã đặt
  3. Sử dụng hàm đếm()
  4. Sử dụng phương pháp Brute Force
  5. Bằng cách nhân các phần tử
  6. Sử dụng phương pháp Slicing
  7. Sử dụng mô-đun itertools

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

r = False

def check(l):
    if(len(l) < 0):
        r = True
    r = all(ele == l[0] for ele in l)

    if(r):
        print("Equal")

    else:
        print("Not Equal")

#input list        
list1 = ['bat', 'bat', 'bat', 'bat']
list2 = [1, 3, 7, 1]

#function call
check(list1)
check(list2)
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'

r = False

def check(l):
    if(len(l) < 0):
        r = True
    r = all(ele == l[0] for ele in l)

    if(r):
        print("Equal")

    else:
        print("Not Equal")

#input list        
list1 = ['bat', 'bat', 'bat', 'bat']
list2 = [1, 3, 7, 1]

#function call
check(list1)
check(list2)


Bằng nhau
Không bằng nhau

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

r = False

def check(l):
    if(len(l) < 0):
        r = True
    r = all(ele == l[0] for ele in l)

    if(r):
        print("Equal")

    else:
        print("Not Equal")

#input list        
list1 = ['bat', 'bat', 'bat', 'bat']
list2 = [1, 3, 7, 1]

#function call
check(list1)
check(list2)
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'

def check(l):
    return len(set(l)) == 1

#input lists
list1 = ['bat', 'bat', 'bat', 'bat']
list2 = [1, 3, 7, 1]

#check for condition
if(check(list1) == True): 
       print("Equal")
else: 
       print("Not Equal")

if(check(list2) == True): 
       print("Equal")
else: 
       print("Not Equal")


Bằng nhau
Không bằng nhau

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

r = False

def check(l):
    if(len(l) < 0):
        r = True
    r = all(ele == l[0] for ele in l)

    if(r):
        print("Equal")

    else:
        print("Not Equal")

#input list        
list1 = ['bat', 'bat', 'bat', 'bat']
list2 = [1, 3, 7, 1]

#function call
check(list1)
check(list2)
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àng

Do đó, 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()

r = False

def check(l):
    if(len(l) < 0):
        r = True
    r = l.count(l[0]) == len(l)

    if(r):
        print("Equal")
    else:
        print("Not Equal")

#input lists
list1 = ['bat', 'bat', 'bat', 'bat']
list2 = [1, 3, 7, 1]

#function call
check(list1)
check(list2)


Bằng nhau
Không bằng nhau

Thí dụ. Kiểm tra tất cả Danh sách bằng cách Sử dụng Phương pháp Brute Force

Thuậ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

def check(l):
    #stores first element in a variable
    first = l[0]
    x = True

    #Comparing each element with first item 
    for ele in l:
          if(first != ele):
                 x = False
                 break;    
    if(x == True): 
          print("Equal")
    else: 
          print("Not Equal")            

#input lists
list1 = ['bat', 'bat', 'bat', 'bat']
list2 = [1, 3, 7, 1]

#function call
check(list1)
check(list2)


Bằng nhau
Không bằng nhau

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

def check(l):
    return l and [l[0]]*len(l) == l

#input lists
list1 = ['bat', 'bat', 'bat', 'bat']
list2 = [1, 3, 7, 1]

#function call
print(check(list1))
print(check(list2))


Đúng
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át

Ví 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à

r = False

def check(l):
    if(len(l) < 0):
        r = True
    r = all(ele == l[0] for ele in l)

    if(r):
        print("Equal")

    else:
        print("Not Equal")

#input list        
list1 = ['bat', 'bat', 'bat', 'bat']
list2 = [1, 3, 7, 1]

#function call
check(list1)
check(list2)
1 với phần cuối của danh sách được ký hiệu là
r = False

def check(l):
    if(len(l) < 0):
        r = True
    r = all(ele == l[0] for ele in l)

    if(r):
        print("Equal")

    else:
        print("Not Equal")

#input list        
list1 = ['bat', 'bat', 'bat', 'bat']
list2 = [1, 3, 7, 1]

#function call
check(list1)
check(list2)
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

def check(l):
    return l[1:] == l[:-1]   

#input lists
list1 = ['bat', 'bat', 'bat', 'bat']
list2 = [1, 3, 7, 1]

#function call
print(check(list1))
print(check(list2))


Đúng
Sai

Thí dụ. Kiểm tra tất cả Danh sách bằng cách Sử dụng Mô-đun itertools

Phương pháp này sử dụng chức năng

r = False

def check(l):
    if(len(l) < 0):
        r = True
    r = all(ele == l[0] for ele in l)

    if(r):
        print("Equal")

    else:
        print("Not Equal")

#input list        
list1 = ['bat', 'bat', 'bat', 'bat']
list2 = [1, 3, 7, 1]

#function call
check(list1)
check(list2)
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

r = False

def check(l):
    if(len(l) < 0):
        r = True
    r = all(ele == l[0] for ele in l)

    if(r):
        print("Equal")

    else:
        print("Not Equal")

#input list        
list1 = ['bat', 'bat', 'bat', 'bat']
list2 = [1, 3, 7, 1]

#function call
check(list1)
check(list2)
1


Đúng
Sai

Sự kết luận

Trong 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ư

r = False

def check(l):
    if(len(l) < 0):
        r = True
    r = all(ele == l[0] for ele in l)

    if(r):
        print("Equal")

    else:
        print("Not Equal")

#input list        
list1 = ['bat', 'bat', 'bat', 'bat']
list2 = [1, 3, 7, 1]

#function call
check(list1)
check(list2)
4,
r = False

def check(l):
    if(len(l) < 0):
        r = True
    r = all(ele == l[0] for ele in l)

    if(r):
        print("Equal")

    else:
        print("Not Equal")

#input list        
list1 = ['bat', 'bat', 'bat', 'bat']
list2 = [1, 3, 7, 1]

#function call
check(list1)
check(list2)
3,
r = False

def check(l):
    if(len(l) < 0):
        r = True
    r = all(ele == l[0] for ele in l)

    if(r):
        print("Equal")

    else:
        print("Not Equal")

#input list        
list1 = ['bat', 'bat', 'bat', 'bat']
list2 = [1, 3, 7, 1]

#function call
check(list1)
check(list2)
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ý