Python如何优雅的交错合并两个列表
伊谢尔伦
伊谢尔伦 2017-04-17 14:28:20
0
11
1127

比如a = [1, 2, 3], b = [4, 5, 6]
合并为[1, 4, 2, 5, 3, 6]
你觉得怎么写比较优雅?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全員に返信(11)
黄舟

リーリー

いいねを押す +0
左手右手慢动作

訂正: 前のコードには問題があります。もう一度更新してください。

エレガントかどうかはわかりませんが、メモリは節約されるはずです:

リーリー
いいねを押す +0
大家讲道理

スタックオーバーフローですでに議論されていることが判明しましたが、その書き方は非常にぎこちないものです。個人的にはこれが好きです:
呼び出されるcycle/islice関数はすべてitertools

からのものです。 リーリー
いいねを押す +0
刘奇

リーリー

そうですか?

//書いている途中で、Python の三項表現を検索して、この種の幻獣が飛んでいるような気分に Python を使っていたことを思い出しました...
//しかし、if a then b else c と書かれた 3 つの要素を含む言語もあり、それは今でも理解できます...

いいねを押す +0
巴扎黑

リーリー

いいねを押す +0
左手右手慢动作

リーリー

これらのシーケンスがすべて同じ長さではない場合はどうすればよいかという質問があります。上記の解決策は、最小の長さに基づいています:

リーリー

しかし、最小のものを選ばなかったらどうなるでしょうか?補完キャラ?どのような文字を追加する必要がありますか?

いいねを押す +0
洪涛

エレガントなデータ処理には、やはり scipy シリーズのライブラリが必要です。
matplotlib には、使用できる既製の flatten 関数があります。

リーリー
いいねを押す +0
Peter_Zhu

リーリー

いいねを押す +0
巴扎黑

a = [1, 2, 3]
b = [4, 5, 6]

一般的な方法

def slove(a, b):
c = []
i = 0
j = 0
while i c.append(a[i])
c.append(b[j])
i = 1
j = 1
一方、私は c.append(a[i])
i = 1
一方、j c.append(b[j])
j = 1

リーリー

if 名前 == 'メイン':
スラブ(a, b)

いいねを押す +0
Peter_Zhu

リーリー

単なるリストのマージである場合、set() に変換してから交差演算を実行できますか
リストのマージを行う場合は、リストよりもセットの方が高速です。
しかし、@lohocla4dam は欠点を指摘してくれました

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート