Apa sintaksis untuk memasukkan satu daftar ke daftar lain dengan python?


197

Diberikan dua daftar:

x = [1,2,3]
y = [4,5,6]

Apa sintaks untuk:

  1. Masukkan xke dalam yyang ysekarang terlihat seperti [1, 2, 3, [4, 5, 6]]?
  2. Masukkan semua item xke dalam yyang ysekarang terlihat seperti [1, 2, 3, 4, 5, 6]?

membalikkan listB, dari situ [listA.insert (pos, x) untuk x di [listB]]
John Mee


1
@ JohnMee Maksud Anda listA.insert(pos, x) for x in listB[::-1]?
wizzwizz4

Jawaban:


360

Apakah yang Anda maksud append?

>>> x = [1,2,3]
>>> y = [4,5,6]
>>> x.append(y)
>>> x
[1, 2, 3, [4, 5, 6]]

Atau bergabung?

>>> x = [1,2,3]
>>> y = [4,5,6]
>>> x + y
[1, 2, 3, 4, 5, 6]
>>> x.extend(y)
>>> x
[1, 2, 3, 4, 5, 6] 

3
Apakah itu ada atau menghasilkan contoh baru?
Daniel Möller

7
x.extend(y)sudah ada, x+ymengembalikan daftar baru. Dan x += y, yang tidak disebutkan di sini, mirip dengan perpanjangan.
wim

85

Pertanyaannya tidak memperjelas apa yang sebenarnya ingin Anda capai.

Daftar memiliki appendmetode, yang menambahkan argumennya ke daftar:

>>> list_one = [1,2,3]
>>> list_two = [4,5,6]
>>> list_one.append(list_two)
>>> list_one
[1, 2, 3, [4, 5, 6]]

Ada juga extendmetode, yang menambahkan item dari daftar yang Anda berikan sebagai argumen:

>>> list_one = [1,2,3]
>>> list_two = [4,5,6]
>>> list_one.extend(list_two)
>>> list_one
[1, 2, 3, 4, 5, 6]

Dan tentu saja, ada insertmetode yang bertindak serupa appendtetapi memungkinkan Anda untuk menentukan titik penyisipan:

>>> list_one.insert(2, list_two)
>>> list_one
[1, 2, [4, 5, 6], 3, 4, 5, 6]

Untuk memperpanjang daftar pada titik penyisipan tertentu, Anda dapat menggunakan pemotongan daftar (terima kasih, @florisla):

>>> l = [1, 2, 3, 4, 5]
>>> l[2:2] = ['a', 'b', 'c']
>>> l
[1, 2, 'a', 'b', 'c', 3, 4, 5]

Pengirisan daftar cukup fleksibel karena memungkinkan untuk mengganti berbagai entri dalam daftar dengan berbagai entri dari daftar lain:

>>> l = [1, 2, 3, 4, 5]
>>> l[2:4] = ['a', 'b', 'c'][1:3]
>>> l
[1, 2, 'b', 'c', 5]

34
Jika Anda ingin 'memperluas' ke titik penyisipan tertentu, Anda dapat menggunakan sintaksis slicing daftar (lihat stackoverflow.com/a/7376026/1075152 )
florisla

5
Komentar @ florisla harusnya menjadi jawaban yang diterima. Ini satu-satunya cara untuk memasukkan daftar ke daftar lain di tempat di lokasi sewenang-wenang (bukan hanya di akhir).
penenun

1
@weaver Sementara itu satu-satunya solusi untuk melakukan itu (diperluas pada indeks tertentu), itu bukan pertanyaan awal.
florisla

@florisla Itu kesopanan.
penenun


3

Anda juga bisa melakukan ...

x += y

Ini harus menjadi komentar pada jawaban yang diterima, karena yang satu menyebutkan x + ydan x += ysama saja tetapi di tempat.
HTNW

Saya tidak memiliki reputasi untuk melakukan itu, tetapi jika orang lain bisa!
user3707850

2

Jika Anda ingin menambahkan elemen dalam daftar (list2) ke akhir daftar lainnya (daftar), maka Anda dapat menggunakan metode rentangkan daftar

list = [1, 2, 3]
list2 = [4, 5, 6]
list.extend(list2)
print list
[1, 2, 3, 4, 5, 6]

Atau jika Anda ingin menggabungkan dua daftar maka Anda dapat menggunakan tanda +

list3 = list + list2
print list3
[1, 2, 3, 4, 5, 6]

0

Jika kita lakukan x.append(y), y direferensikan ke x sehingga setiap perubahan yang dilakukan pada y akan mempengaruhi ditambahkan juga x. Jadi jika kita hanya perlu memasukkan elemen, kita harus melakukan hal berikut:

x = [1,2,3] y = [4,5,6] x.append(y[:])

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.