cari

Rumah  >  Soal Jawab  >  teks badan

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 hari yang lalu402

membalas semua(4)saya akan balas

  • 大家讲道理

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

    Jika anda ingin menggabungkan berbilang senarai menjadi satu, sebaiknya gunakan itertools.chain untuk menggabungkannya Berikut ialah contoh mudah:

    >>> from itertools import chain
    >>> a = [1,2,3]
    >>> b = [4,5,6]
    >>> c = [7,8,9]
    >>> chain(a,b,c)
    <itertools.chain object at 0x7f2915465c10>
    >>> list(chain(a,b,c))
    [1, 2, 3, 4, 5, 6, 7, 8, 9]

    Untuk kes anda:

    from itertools import chain
    lst = list(chain(*self._i))

    Penyimpangan berikut.

    Kaedah

    @松林 boleh dilaksanakan, dan prestasinya tidak buruk dalam python, kelakuan operasi penguatan (dipertingkat) dan operasi am tidak semestinya sama, di sini Kami menggunakan untuk berbincang.

    Mari kita lihat contoh:

    >>> lst1 = [1,2,3]
    >>> lst2 = [4,5,6]
    >>> id(lst1)
    139814427362656
    >>> id(lst1 + lst2)
    139814427363088
    >>> lst1 += lst2
    >>> id(lst1)
    139814427362656

    Daripada contoh ini, kita dapati bahawa lst1 lst2 akan menjana senarai baharu, tetapi lst1 = lst2 tidak akan, kerana untuk operasi pengembangan, Python kebanyakan akan mengikut peraturan berikut:

    1. Jenis tidak berubah akan menghasilkan objek baharu selepas operasi dan biarkan pembolehubah merujuk kepada objek

    2. Jenis pembolehubah akan menggunakan operasi di tempat untuk mengembangkan atau mengemas kini objek

    3. yang dirujuk pada asalnya pembolehubah.

    Dalam erti kata lain, lst1 = lst2 bersamaan dengan lst1.extend(lst2)

    Ini bergantung pada sama ada jenis mempunyai pelaksanaan __iadd__(atau __imul__ ...) dan bukannya hanya melaksanakan __add__ (atau __mul__ ...)

    Untuk jenis yang tidak melaksanakan __iXXX__, Python akan memanggil __XXX__ sebaliknya, yang pasti akan mengira objek baharu, tetapi __iXXX__ akan mengemas kini objek asal

    di tempatnya.

    Maksudnya Kebanyakan :

    1. Jenis tidak berubah tidak akan dilaksanakan __iXXX__ kerana tidak masuk akal untuk mengemas kini objek tidak berubah

    2. Jenis boleh ubah akan dilaksanakan __iXXX__ untuk mengemas kini di tempat

    Mengapa saya terus menekankan kebanyakannya?

    Oleh kerana operasi penguatan str dioptimumkan dalam CPython, str = other terlalu biasa digunakan apabila menggabungkan, Python tidak akan menyalin rentetan setiap kali


    Soalan yang saya jawab: Python-QA

    balas
    0
  • 高洛峰

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

    Gunakan fungsi lanjutan, seperti:

    >>> a=[1,2,3]
    >>> b=[4,5,6]
    >>> c=[7,8,9]
    >>> d=[]
    >>> d.extend([a,b,c])
    >>> d
    [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

    balas
    0
  • PHP中文网

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

    Menggunakan penambahan akan menjadi lebih intuitif, tetapi prestasi akan menjadi lebih teruk

    ret = []
    for x in self._i:
        ret += x
    print(x)

    balas
    0
  • ringa_lee

    ringa_lee2017-04-17 18:03:28

    Adakah ini lebih Pythonic?

    myList = [x for j in self._i for x in j]

    balas
    0
  • Batalbalas