Rumah > Soal Jawab > teks badan
新手勿喷
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 出来是空白
大家讲道理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:
Jenis tidak berubah akan menghasilkan objek baharu selepas operasi dan biarkan pembolehubah merujuk kepada objek
Jenis pembolehubah akan menggunakan operasi di tempat untuk mengembangkan atau mengemas kini objek
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
Maksudnya Kebanyakan :
Jenis tidak berubah tidak akan dilaksanakan __iXXX__
kerana tidak masuk akal untuk mengemas kini objek tidak berubah
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
高洛峰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]]
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)
ringa_lee2017-04-17 18:03:28
Adakah ini lebih Pythonic?
myList = [x for j in self._i for x in j]