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

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

合并兩個列表中的元素

合并兩個列表中的元素

狐的傳說 2021-11-16 16:43:06
我想以一種特殊的方式合并python中的兩個數組。我的輸出數組的奇數索引的out條目應該是我的第一個輸入數組的對應條目in0。具有偶數索引的條目out應是我的第二個輸入數組的對應條目 in1。in0,in1并且out都是相同的長度。例子:輸入數組in0 = [0, 1, 2, 3] in1 = [4, 5, 6, 7]應合并到輸出數組out = [0, 5, 2, 7]有沒有比循環輸入的整個長度并out“手動”填充我的更好的方法?
查看完整描述

3 回答

?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

您可以使用列表理解并從in0偶數索引和in1奇數索引中選擇值:

[in0[i] if i % 2 == 0 else in1[i] for i in range(len(in0))]
# [0, 5, 2, 7]


查看完整回答
反對 回復 2021-11-16
?
一只甜甜圈

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

如果您樂于制作完整的列表副本,那么切片很簡單:


>>> in0 = [0, 1, 2, 3]

>>> in1 = [4, 5, 6, 7]

>>> out = in0[:]

>>> out[1::2] = in1[1::2]

>>> out

[0, 5, 2, 7]


查看完整回答
反對 回復 2021-11-16
?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

如果你不介意一些冗長...


from itertools import cycle


in0 = [0, 1, 2, 3]

in1 = [4, 5, 6, 7]


out = [pair[i] for pair, i in zip(zip(in0, in1), cycle([0,1]))]

這個怎么運作:

  1. zip(in0, in1)是一個元組序列, (0,4), (1,5), (2,6), (3,7)。

  2. cycle([0,1]) 是無盡的交替 0 和 1 流,用作步驟 1 中元組中的索引。

  3. zip(zip(...), cycle(...)) 產生一對元組和索引:

    (0, (0,4)), (1, (1,5)), (0, (2,6)), (1, (3,7)).
  4. 列表理解從每個元組中獲取正確的元素。

最后,列表推導式是一個通用版本

[(0,4)[0], (1,5)[1], (2,6)[0], (3,7)[1]]


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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