Hướng dẫn how to check sequence of numbers in python - cách kiểm tra dãy số trong python

Tôi muốn tìm một chuỗi các số nguyên liên tiếp trong một danh sách được sắp xếp và trả về chuỗi đó. Đây là điều tốt nhất tôi có thể tìm ra (với n = 4) và nó không cho phép người dùng chỉ định n.

my_list = [2,3,4,5,7,9]
for i in range(len(my_list)):
    if my_list[i+1] == my_list[i]+1 and my_list[i+2] == my_list[i]+2 and my_list[i+3] == my_list[i]+3:
        my_sequence = list(range(my_list[i],my_list[i]+4))

my_sequence = [2,3,4,5]

Tôi chỉ nhận ra mã này không hoạt động và trả về lỗi "chỉ mục ra khỏi phạm vi", vì vậy tôi sẽ phải gây rối với phạm vi của vòng lặp.

Đã hỏi ngày 9 tháng 10 năm 2015 lúc 1:24Oct 9, 2015 at 1:24

Hướng dẫn how to check sequence of numbers in python - cách kiểm tra dãy số trong python

rspears69rspears69rspears69

4331 Huy hiệu vàng7 Huy hiệu bạc19 Huy hiệu đồng1 gold badge7 silver badges19 bronze badges

6

Đây là một giải pháp thẳng. Nó không hiệu quả như nó có thể, nhưng nó sẽ ổn trừ khi bạn có danh sách rất dài:

myarray = [2,5,1,7,3,8,1,2,3,4,5,7,4,9,1,2,3,5]
for idx, a in enumerate(myarray):
    if myarray[idx:idx+4] == [a,a+1,a+2,a+3]:
        print([a, a+1,a+2,a+3])
        break

Đã trả lời ngày 9 tháng 10 năm 2015 lúc 1:58Oct 9, 2015 at 1:58

Saulspatzsaulspatzsaulspatz

4.8315 Huy hiệu vàng33 Huy hiệu bạc42 Huy hiệu đồng5 gold badges33 silver badges42 bronze badges

Tạo một danh sách kết quả chính lồng nhau, sau đó đi qua my_sorted_list và thêm từng mục vào danh sách cuối cùng trong chủ (nếu không liên tục) hoặc vào một danh sách mới trong chủ (nếu liên tục):

>>> my_sorted_list = [0,2,5,7,8,9]
>>> my_sequences = []
>>> for idx,item in enumerate(my_sorted_list):
...     if not idx or item-1 != my_sequences[-1][-1]:
...         my_sequences.append([item])
...     else:
...         my_sequences[-1].append(item)
...
>>> max(my_sequences, key=len)
[7, 8, 9]

Đã trả lời ngày 9 tháng 10 năm 2015 lúc 1:50Oct 9, 2015 at 1:50

Hướng dẫn how to check sequence of numbers in python - cách kiểm tra dãy số trong python

TigerhawkT3TigerhawkT3TigerhawkT3

47.6K6 Huy hiệu vàng57 Huy hiệu bạc91 Huy hiệu Đồng6 gold badges57 silver badges91 bronze badges

Một cách ngắn và ngắn gọn là lấp đầy một mảng với các số mỗi khi bạn tìm thấy số nguyên tiếp theo là số nguyên hiện tại Plus 1 (cho đến khi bạn đã có n số liên tiếp trong mảng) và đối với bất cứ điều gì khác, chúng ta có thể làm trống mảng:

arr = [4,3,1,2,3,4,5,7,5,3,2,4]
N = 4
newarr = []

for i in range(len(arr)-1):
    if(arr[i]+1 == arr[i+1]):
        newarr += [arr[i]]
        if(len(newarr) == N):
            break
    else:
        newarr = []

Khi mã được chạy, Newarr sẽ là:

[1, 2, 3, 4]

Đã trả lời ngày 9 tháng 10 năm 2015 lúc 1:49Oct 9, 2015 at 1:49

Hướng dẫn how to check sequence of numbers in python - cách kiểm tra dãy số trong python

Patrick Yupatrick YuPatrick Yu

9421 Huy hiệu vàng7 Huy hiệu bạc19 Huy hiệu đồng1 gold badge7 silver badges19 bronze badges

#size = length of sequence
#span = the span of neighbour integers
#the time complexity is O(n) 
def extractSeq(lst,size,span=1):
    lst_size = len(lst)
    if lst_size < size:
        return []
    for i in range(lst_size - size + 1):
        for j in range(size - 1):
            if lst[i + j] + span == lst[i + j + 1]:
                continue
            else:
                i += j
                break
        else:
            return lst[i:i+size]
    return []

Đã trả lời ngày 9 tháng 10 năm 2015 lúc 1:54Oct 9, 2015 at 1:54

HootinghootingHooting

1.61111 Huy hiệu bạc20 Huy hiệu Đồng11 silver badges20 bronze badges

mylist = [2,3,4,5,7,9]
for j in range(len(mylist)):
      m=mylist[j]
      idx=j
      c=j
      for i in range(j,len(mylist)):
               if mylist[i]

Đã trả lời ngày 1 tháng 5 lúc 11:07May 1 at 11:07

Hướng dẫn how to check sequence of numbers in python - cách kiểm tra dãy số trong python

1