Computer >> Máy Tính >  >> Lập trình >> Python

Kiểm tra xem danh sách có chứa các số liên tiếp bằng Python hay không

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

Với phạm vi và được sắp xếp

Hàm đã sắp xếp sẽ sắp xếp lại các phần tử của danh sách theo thứ tự đã sắp xếp. Sau đó, chúng tôi áp dụng hàm phạm vi lấy các số thấp nhất và cao nhất tạo thành danh sách bằng cách sử dụng các hàm min và max. Chúng tôi lưu trữ kết quả của các phép toán trên trong hai danh sách và so sánh chúng cho 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 has consecutive numbers")
else:
   print("listA has no consecutive numbers")

# Checking again
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 has consecutive numbers")
else:
   print("ListB has no consecutive numbers")

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

listA has consecutive numbers
ListB has no consecutive numbers

Với khác biệt số và được sắp xếp

Hàm diff trong numpy có thể tìm thấy sự khác biệt giữa mỗi số sau khi chúng được sắp xếp. Chúng tôi tổng hợp những điểm khác biệt này. Điều đó sẽ khớp với độ dài của 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 has consecutive numbers")
else:
   print("listA has no consecutive numbers")

# Checking again
listB = [23,20,13,21,24]
sorted_list_diffs = sum(np.diff(sorted(listB)))
if sorted_list_diffs == (len(listB) - 1):
   print("ListB has consecutive numbers")
else:
   print("ListB has no consecutive numbers")

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

listA has consecutive numbers
ListB has no consecutive numbers