Cara menambahkan banyak item dalam satu baris dengan Python

91

Saya sudah:

count = 0
i = 0
while count < len(mylist):
    if mylist[i + 1] == mylist[i + 13] and mylist[i + 2] == mylist[i + 14]:
        print mylist[i + 1], mylist[i + 2]
    newlist.append(mylist[i + 1])
    newlist.append(mylist[i + 2])
    newlist.append(mylist[i + 7])
    newlist.append(mylist[i + 8])
    newlist.append(mylist[i + 9])
    newlist.append(mylist[i + 10])
    newlist.append(mylist[i + 13])
    newlist.append(mylist[i + 14])
    newlist.append(mylist[i + 19])
    newlist.append(mylist[i + 20])
    newlist.append(mylist[i + 21])
    newlist.append(mylist[i + 22])
    count = count + 1
    i = i + 12

Saya ingin membuat newlist.append()pernyataan menjadi beberapa pernyataan.

Masa bodo
sumber
Jelas tidak sama jika mendapatkan hasil yang berbeda.
JJJ
Ini adalah sintaks yang tidak valid.
TerryA
4
Dengan asumsi benda Anda dimaksudkan untuk menjadi daftar, kode Anda tidak Python berlaku sebagai Anda menggunakan []bukan (). Silakan posting kode kerja nyata.
BrenBarn

Jawaban:

227

Tidak. Metode untuk menambahkan seluruh urutan adalah list.extend().

>>> L = [1, 2]
>>> L.extend((3, 4, 5))
>>> L
[1, 2, 3, 4, 5]
Ignacio Vazquez-Abrams
sumber
'menyisipkan' fungsi sebagai 'menambahkan' tetapi menambahkan ke awal daftar. Apakah ada fungsi untuk menambahkan beberapa nilai ke awal daftar?
burung gereja
@sparrow: Tidak. Slice-assign sebagai gantinya.
Ignacio Vazquez-Abrams
apakah Anda memerlukan masukan kedua untuk menjadi daftar atau dapatkah setiap elemen dipisahkan dengan koma?
Charlie Parker
@CharlieParker: Argumen untuk list.extend()harus dapat diulang.
Ignacio Vazquez-Abrams
5

Tidak.

Pertama, appendadalah fungsi, jadi Anda tidak bisa menulis append[i+1:i+4]karena Anda mencoba mendapatkan bagian dari sesuatu yang bukan berurutan. (Anda tidak bisa mendapatkan unsur itu, baik: append[i+1]salah untuk alasan yang sama.) Ketika Anda memanggil fungsi, argumen itu di kurung , yaitu yang bulat: ().

Kedua, apa yang Anda coba lakukan adalah "mengambil urutan, dan meletakkan setiap elemen di dalamnya di akhir urutan lainnya, dalam urutan aslinya". Itu dieja extend. appendadalah "ambillah benda ini, dan letakkan di akhir daftar, sebagai satu item , meskipun itu juga sebuah daftar ". (Ingatlah bahwa daftar adalah sejenis urutan.)

Tapi kemudian, Anda perlu menyadari bahwa itu i+1:i+4adalah konstruksi khusus yang hanya muncul di dalam tanda kurung siku (untuk mendapatkan potongan dari urutan) dan tanda kurung (untuk membuat dictobjek). Anda tidak dapat meneruskannya ke suatu fungsi. Jadi Anda tidak bisa melakukannya extend. Anda perlu membuat urutan nilai-nilai itu, dan cara alami untuk melakukannya adalah dengan rangefungsinya.

Karl Knechtel
sumber
5

Anda juga bisa:

newlist += mylist[i:i+22]
Kevin Postlewaite
sumber
2

Gunakan ini :

#Inputs
L1 = [1, 2]
L2 = [3,4,5]

#Code
L1+L2

#Output
[1, 2, 3, 4, 5]

Dengan menggunakan operator (+) Anda dapat melewati beberapa operator tambah & tambah hanya dalam satu baris kode dan ini berlaku untuk lebih dari dua daftar dengan L1 + L2 + L3 + L4 ....... dll.

Selamat Belajar ... :)

Idrisi_Kasim
sumber
1
mylist = [1,2,3]

def multiple_appends(listname, *element):
    listname.extend(element)

multiple_appends(mylist, 4, 5, "string", False)
print(mylist)

KELUARAN:

[1, 2, 3, 4, 5, 'string', False]
kata rehman
sumber
1

gunakan untuk loop. seperti ini:

for x in [1,2,7,8,9,10,13,14,19,20,21,22]:
    new_list.append(my_list[i + x])
zakizakibzr
sumber