Bir listeyi python'daki başka bir listeye eklemek için sözdizimi nedir?


197

Verilen iki liste:

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

Sözdizimi nedir:

  1. Yerleştirin xiçine yöyle yşimdi benziyor [1, 2, 3, [4, 5, 6]]?
  2. Tüm öğeleri yerleştirin xiçine yöyle yşimdi benziyor [1, 2, 3, 4, 5, 6]?

ters listeB, bu nedenle [listB] içindeki x için [listA.insert (konum, x)]
John Mee

ayrıca bu
gönderiye

1
@JohnMee Bunu mu demek istediniz listA.insert(pos, x) for x in listB[::-1]?
wizzwizz4

Yanıtlar:


360

Bunu mu demek istediniz append?

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

Veya birleştir?

>>> 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
Bu yerinde mi yoksa yeni bir örnek mi veriyor?
Daniel Möller

7
x.extend(y)yerinde, x+yyeni liste döndürüyor. Ve x += yburada bahsedilmeyen, uzatmaya benzer.
wim

86

Soru tam olarak neye ulaşmak istediğinizi netleştirmiyor.

List, appendargümanını listeye ekleyen bir yönteme sahiptir :

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

Ayrıca , listeden öğeleri bağımsız değişken olarak extendekleyen yöntem de vardır :

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

Ve elbette, insertbenzer şekilde davranan appendancak ekleme noktasını belirtmenize izin veren yöntem var :

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

Bir listeyi belirli bir ekleme noktasında genişletmek için liste dilimlemeyi kullanabilirsiniz (teşekkürler, @florisla):

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

Liste dilimleme, bir listedeki bir dizi girdiyi başka bir listeden bir dizi girişle değiştirmeyi sağladığı için oldukça esnektir:

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

34
Belirli bir ekleme noktasına 'genişletmek' istiyorsanız, liste dilimleme sözdizimini kullanabilirsiniz (bkz. Stackoverflow.com/a/7376026/1075152 )
florisla

5
@ florisla'nın yorumu kabul edilen cevap olmalıdır. Bir listeyi, rastgele bir konumda bulunan başka bir listeye eklemenin tek yolu (yalnızca sonunda değil).
dokumacı

1
bunu yapmak için tek çözüm olsa @weaver o orijinal soru değildi, (belirli bir dizinde uzatmak).
florisla

@florisla Bu bilgiçlik.
dokumacı


3

Ayrıca şunları da yapabilirsiniz ...

x += y

Bu, kabul edilen cevaba bir yorum olmalıdır, çünkü biri bundan bahseder x + yve x += yaynı şeydir, ancak yerinde.
HTNW

Bunu yapacak bir üne sahip değilim, ama başka biri yapabilirse!
user3707850

2

Bir listedeki (list2) öğeleri diğer listenin (listenin) sonuna eklemek isterseniz, liste genişletme yöntemini kullanabilirsiniz

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

Veya iki listeyi birleştirmek istiyorsanız + işaretini kullanabilirsiniz

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

0

Sadece yaparsak x.append(y), y'de yapılan herhangi bir değişiklik ekli x'i de etkileyecek şekilde x'e atıf yapılır. Bu nedenle, yalnızca öğeler eklememiz gerekirse, aşağıdakileri yapmalıyız:

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.