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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在 Python 中分割列表列表

在 Python 中分割列表列表

www說 2022-07-19 15:52:26
我有一個(gè)長(zhǎng)度相同的列表列表。我想將第一個(gè)列表分割成給定值的連續(xù)運(yùn)行。然后我想分割剩余的列表以匹配從第一個(gè)列表生成的段。例如:Given value: 2Given list of lists: [[0,0,2,2,2,1,1,1,2,3], [1,2,3,4,5,6,7,8,9,10], [1,1,1,1,1,1,1,1,1,1]Return: [ [[2,2,2],[2]], [[3,4,5],[9]], [[1,1,1],[1]] ]我得到的最接近的是通過以下方式獲取索引:>>> import itertools>>> import operator>>> x = 2>>> L = [[0,0,2,2,2,1,1,1,2,3],[1,2,3,4,5,6,7,8,9,10],[1,1,1,1,1,1,1,1,1,1]]>>> I = [[i for i,value in it] for key,it in itertools.groupby(enumerate(L[0]), key=operator.itemgetter(1)) if key == x]>>> print I[[2, 3, 4], [8]]此代碼是根據(jù)此站點(diǎn)上的另一個(gè)問題修改的。我想找到最有效的方法,因?yàn)檫@些列表可能很長(zhǎng)。編輯:也許如果我將列表放在一起,可能會(huì)更清楚:[[0,0,[2,2,2],1,1,1,[2],3], -> [2,2,2],[2] [1,2,[3,4,5],6,7,8,[9],10],-> [3,4,5],[9] [1,1,[1,1,1],1,1,1,[1],1]] -> [1,1,1],[1]
查看完整描述

2 回答

?
森欄

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊

您可以使用groupby以組的起始索引和長(zhǎng)度的元組的形式創(chuàng)建組列表,并使用此列表從每個(gè)子列表中提取值:


from itertools import groupby

from operator import itemgetter


def match(L, x):

    groups = [(next(g)[0], sum(1 for _ in g) + 1)

        for k, g in groupby(enumerate(L[0]), key=itemgetter(1)) if k == x]

    return [[lst[i: i + length] for i, length in groups] for lst in L]

以便:


match([[0,0,2,2,2,1,1,1,2,3], [1,2,3,4,5,6,7,8,9,10], [1,1,1,1,1,1,1,1,1,1]], 2)

返回:


[[[2, 2, 2], [2]], [[3, 4, 5], [9]], [[1, 1, 1], [1]]]


查看完整回答
反對(duì) 回復(fù) 2022-07-19
?
楊魅力

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊

l=[[0,0,2,2,2,1,1,1,2,3], [1,2,3,4,5,6,7,8,9,10], [1,1,1,1,1,1,1,1,1,1]]


temp=l[0]


value=2

dict={}

k=-1

prev=-999

for i in range(0,len(temp)):

    if(temp[i]==value):

        if(prev!=-999 and prev==i-1):

            if(k in dict):

                dict[k].append(i)

            else:

                dict[k]=[i]

        else:

            k+=1

            if(k in dict):

                dict[k].append(i)

            else:

                dict[k]=[i]

        prev=i

output=[]

for i in range(0,len(l)):

    single=l[i]

    final=[]

    for keys in dict: #{0: [2, 3, 4], 1: [8]}

        ans=[]

        desired_indices=dict[keys]

        for j in range(0,len(desired_indices)):

            ans.append(single[desired_indices[j]])

        final.append(ans)

    output.append(final)

print(output) #[[[2, 2, 2], [2]], [[3, 4, 5], [9]], [[1, 1, 1], [1]]]

這似乎是一種方法,首先創(chuàng)建傳染性元素的字典,然后在每個(gè)列表中查找該鍵并存儲(chǔ)在輸出中。


查看完整回答
反對(duì) 回復(fù) 2022-07-19
  • 2 回答
  • 0 關(guān)注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)