検索

ホームページ  >  に質問  >  本文

python 列表问题 ?

新手勿喷

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 出来是空白 
大家讲道理大家讲道理2893日前404

全員に返信(4)返信します

  • 大家讲道理

    大家讲道理2017-04-17 18:03:28

    複数のリストを 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
  • 高洛峰

    高洛峰2017-04-17 18:03:28

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

    リーリー

    返事
    0
  • PHP中文网

    PHP中文网2017-04-17 18:03:28

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

    リーリー

    返事
    0
  • ringa_lee

    ringa_lee2017-04-17 18:03:28

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

    リーリー

    返事
    0
  • キャンセル返事