Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Kiểm tra danh sách chứa số liên tiếp trong Python


Tùy vào nhu cầu phân tích dữ liệu, chúng ta có thể cần kiểm tra sự hiện diện của các số liên tiếp trong một chứa dữ liệu Python. Trong các chương trình dưới đây, chúng ta tìm ra xem trong các phần tử của một danh sách có chứa các số liên tiếp hay không.

Sử dụng range và sorted

Hàm sorted sẽ sắp xếp lại các phần tử của danh sách theo thứ tự. Sau đó chúng ta áp dụng hàm range lấy số nhỏ nhất và lớn nhất từ danh sách bằng hàm min và max. Chúng ta lưu kết quả của các thao tác trên vào hai danh sách và so sánh chúng về sự bằng nhau.

Ví dụ

listA = [23,20,22,21,24] sorted_list = sorted(listA) #sorted(l) == range_list=list(range(min(listA), max(listA)+1)) if sorted_list == range_list:    print("listA có các số liên tiếp") else:    print("listA không có số liên tiếp") # Kiểm tra lại listB = [23,20,13,21,24] sorted_list = sorted(listB) #sorted(l) == range_list=list(range(min(listB), max(listB)+1)) if sorted_list == range_list:    print("ListB có các số liên tiếp") else:    print("ListB không có số liên tiếp")

Kết quả

Chạy mã trên cho kết quả sau −

listA có các số liên tiếp ListB không có số liên tiếp

Sử dụng numpy diff và sorted

Hàm diff trong numpy có thể tìm hiệu giữa các số sau khi chúng được sắp xếp. Chúng ta lấy tổng của các hiệu này. Tổng đó sẽ khớp với độ dài danh sách nếu tất cả các số đều liên tiếp.

Ví dụ

import numpy as np listA = [23,20,22,21,24] sorted_list_diffs = sum(np.diff(sorted(listA))) if sorted_list_diffs == (len(listA) - 1):    print("listA có các số liên tiếp") else:    print("listA không có số liên tiếp") # Kiểm tra lại listB = [23,20,13,21,24] sorted_list_diffs = sum(np.diff(sorted(listB))) if sorted_list_diffs == (len(listB) - 1):    print("ListB có các số liên tiếp") else:    print("ListB không có số liên tiếp")

Kết quả

Chạy mã trên cho kết quả sau −

listA có các số liên tiếp ListB không có số liên tiếp