python 列表问题 ?
大家讲道理
大家讲道理 2017-04-17 18:01:28
0
4
391

新手勿喷

for i in  open (v):
    _temp = i.split('-')
    self._i= gen.gen(_temp[0], _temp[1])

self._i 中是多个列表[] [] [] 怎样合并成一个


cc = []
for i in  open (v):
    _temp = i.split('-')
    self= gen.gen(_temp[0], _temp[1])
    for bbc in  self:
        cc.append(i)

这样解决的 !!!

怎样把结果赋值给 self._i

 self._i = cc
    print 出来是空白 
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全員に返信(4)
大家讲道理

複数のリストを 1 つに結合する場合は、itertools.chain を使用してそれらを連結するのが最善です。以下は簡単な例です:

リーリー

あなたの場合:

リーリー

以下余談。

@松林さんの方法は実現可能であり、Pythonでは増幅(拡張)操作一般操作の動作は必ずしも同じではありません。ここでは + を使用して議論します。

例を見てみましょう:

リーリー

この例から、lst1 + lst2 は新しいリストを生成しますが、lst1 += lst2 は生成しないことがわかります。これは、拡張操作の場合、Python ほとんどの が次のルールに従うためです。

  1. 不変型は操作後に新しいオブジェクトを生成し、変数にそのオブジェクトを参照させます

  2. 変数タイプは、インプレース操作を使用して、変数が元々参照していたオブジェクト

  3. を展開または更新します。

つまり、lst1 += lst2lst1.extend(lst2)

と同等です。

これは、型に __iadd__ (または __imul__ ...)__add__ のみを実装するのではなく、実装 __mul__(または

...) があるかどうかによって異なります。

__iXXX__ を実装していない型の場合、Python は代わりに __XXX__ を呼び出します。これにより確実に新しいオブジェクトが計算されますが、__iXXX__ は元のオブジェクト

を更新します。

つまり、 のほとんど:

  1. 不変オブジェクトを更新するのは意味がないため、不変型は実装されません __iXXX__

  2. 変更可能な型は実装されます __iXXX__ で更新されます

なぜ私はそのほとんどを強調し続けるのですか?

CPython では str の増幅演算が最適化されているため、連結する際に str += other が頻繁に使用されます。Python は

のたびに文字列をコピーしません。

私が回答した質問: Python-QA

いいねを押す +0
小葫芦

次のような拡張関数を使用します。

リーリー
いいねを押す +0
洪涛

加算を使用するとより直感的になりますが、パフォーマンスは低下します

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

これはより Python っぽいですか?

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