亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

將元組列表成對組合成特定長度的新元組列表

將元組列表成對組合成特定長度的新元組列表

青春有我 2022-07-19 16:39:40
我對 Python 很陌生。我正在嘗試將兩個元組列表成對組合成一個元組列表,其中元組具有定義的長度(假設為 8):例如,輸入:x = [(0,1,2,3),(4,5,6,7),(8,9,10,11)]y = [('a','b','c','d'),('e','f','g','h'),('i','j','k','l')]輸出:[('a', 0, 'b', 1, 'c', 2, 'd', 3), ('e', 4, 'f', 5,'g', 6, 'h', 7), ('i', 8, 'j', 9, 'k', 10, 'l', 11)]我嘗試了幾個不同的循環,嘗試連接成對組合元組,然后將它們添加到給定的長度,但沒有運氣。見下文。new = []for n in range(len(x)):    for p in range(len(x[n])):        if p == len(x[n])-1:            new += [(x[n][p],y[n][p])]            for v in range(len(x[n])):                newer += new[v]        else:            new += [(x[n][p],y[n][p])]上面的“較新”列表沒有用,但“新”列表提供了我正在尋找的元組的成對組合,就像我相信 merge() 一樣,至少。[('a', 0),('b', 1),('c', 2),('d', 3),('e', 4),('f', 5),('g', 6),('h', 7),('i', 8) ('j', 9),('k', 10), ('l', 11)]我在想我可以制作一種讀取所需長度(在本例中為四個)并連接選擇的窗口,但無法使其正常工作。歡迎任何其他解決方案。
查看完整描述

3 回答

?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

使用緩沖區:


b = [None] * 8

[tuple(b) for b[::2], b[1::2] in zip(y, x)]


查看完整回答
反對 回復 2022-07-19
?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

(代表問題作者發布解決方案,將其移至答案空間)。


我最終得到了一些工作:


final_list = []

for outer in range(len(a)):

    for ele in range(len(a[outer])):

        if ele == 0:

           slice_start = 0

        else: 

           slice_start += len(b[ele-1])

           slice_end = len(b[ele])+slice_start

           capture = [target for sublist in a[slice_start:slice_end] for target in sublist]

           final_list.append(capture)

final_list = final_list[:len(a)]

絕對不如 heap_overflow 的答案漂亮。


查看完整回答
反對 回復 2022-07-19
?
米脂

TA貢獻1836條經驗 獲得超3個贊

首先將您的子列表壓縮到匹配對的列表中:


pair_list = [list(zip(a, b)) for a, b in zip(x, y) ]

結果:


[[(0, 'a'), (1, 'b'), (2, 'c'), (4, 'd')],

 [(5, 'e'), (6, 'f'), (7, 'g'), (8, 'h')],

 [(9, 'i'), (10, 'j'), (11, 'k'), (12, 'l')]]

現在,簡單地展平內部列表。您可以將簡單的展平視為“學生練習”,好嗎?


查看完整回答
反對 回復 2022-07-19
  • 3 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

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

公眾號

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