![](/img/trans.png)
[英]How to find the longest consecutive subsequence of a list greater than mean in python
[英]How to return the longest subsequence formed by consecutive numbers in a Python list?
我能夠計算由列表中連續數字形成的最長升序子序列的長度,或任何子序列的最大總和。 但是,我有點難以打印出具有連續數字的最長子序列(例如:8、9、10、11、12)。 我怎樣才能做到這一點? 每次在 new_list 中檢查 num 值時,我是否應該創建一個空列表並覆蓋這些值?
提前致謝, lanuit72
def longest_largest_seq(list):
list = [5,6,3,8,3,4,9,8,10,12,11,99,98]
largest = 0
sum = 0
new_list = set(list) #using set to get unique value from the list
max_count = 0
count = 0
for num in list:
if num - 1 not in new_list:
sum = 0
count = 0
while num in new_list:
sum += num
count += 1
num += 1
if sum > largest:
largest = sum
if count > max_count:
max_count = count
return largest, max_count
print(f'Largest consecutive sum and longest consecutive subsequence', longest_largest_seq(list))
像這樣的東西?
from more_itertools import consecutive_groups
a_list = [5,6,3,8,3,4,9,8,10,12,11,99,98]
sorted_list = sorted(a_list)
grouped = [list(i) for i in consecutive_groups(sorted_list)]
for i in grouped:
print(i)
print('\n', max(grouped, key=len), sep='')
[3]
[3, 4, 5, 6]
[8]
[8, 9, 10, 11, 12]
[98, 99]
[8, 9, 10, 11, 12]
我想這就是你想要的?
import copy
seq = sorted([5,6,3,8,3,4,9,8,10,12,11,99,98])
sub_seq1 = []
sub_seq2 = []
for index, num in enumerate(seq):
if index < len(seq) - 1:
if num + 1 == seq[index + 1]:
sub_seq2.append(num)
else:
sub_seq2.append(num)
if len(sub_seq2) > len(sub_seq1):
sub_seq1 = copy.deepcopy(sub_seq2)
sub_seq2.clear()
print(sub_seq1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.