第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在python中刪除連續(xù)整數中除第一個和最后兩個元素之外的列表中的值

在python中刪除連續(xù)整數中除第一個和最后兩個元素之外的列表中的值

動漫人物 2021-11-30 10:47:51
例如,我的清單是my_list = [1,2,3,4,5,  9,10,11,12,13,14,  20,21,22,23,24,25,26,27]我想在連續(xù)值中保存兩個元素的第一個和最后一個邊界。所以我需要得到的是:output = [1,2,4,5,  9,10,13,14,  20,21,26,27]我怎樣才能簡單或有效地得到這個結果?
查看完整描述

3 回答

?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

用 more_itertools.consecutive_groups


import more_itertools as mit


my_list = [1,2,3,4,5,9,10,11,12,13,14,15]


x = [list(group) for group in mit.consecutive_groups(my_list)]


oputput = []

for i in x:

    temp = [i[0],i[1],i[-2],i[-1]]

    output.extend(temp)    

輸出:


[1,2,4,5,9,10,14,15]


查看完整回答
反對 回復 2021-11-30
?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

您可以通過將列表與自身的偏移量為 1 進行壓縮來配對相鄰的列表項,但使用非連續(xù)值填充移位的列表,以便您可以遍歷配對并確定存在一個單獨的組一對不是 1:


def consecutive_groups(l):

    o = []

    for a, b in zip([l[0] - 2] + l, l):

        if b - a != 1:

            o.append([])

        o[-1].append(b)

    return [s[:2] + s[-2:] for s in o]

給定您的樣本輸入,consecutive_groups(my_list)返回:


[[1, 2, 4, 5], [9, 10, 13, 14], [20, 21, 26, 27]]


查看完整回答
反對 回復 2021-11-30
?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

僅使用標準itertools模塊,您可以執(zhí)行以下操作:


from itertools import count, groupby


def remove_middle_of_seq(lst):

    out = []

    index = count()

    for _, sequence in groupby(lst, lambda value: value - next(index)):

        seq = list(sequence)

        out.extend([seq[0], seq[1], seq[-2], seq[-1]])

    return out


my_list = [1,2,3,4,5,  9,10,11,12,13,14,  20,21,22,23,24,25,26,27]

print(remove_middle_of_seq(my_list))

# [1, 2, 4, 5, 9, 10, 13, 14, 20, 21, 26, 27]

在連續(xù)值的組中,值與其索引之間的差異是恒定的,因此groupby可以使用此差異作為關鍵字對它們進行分組。


查看完整回答
反對 回復 2021-11-30
  • 3 回答
  • 0 關注
  • 198 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號