2012-04-03 7 views
1

Ich verstehe nicht ganz was hier passiertPython Liste Verkettung

a=[1,2,3,4] 
b=[5,6,7,8] 

a[len(a):] = b scheint ein Äquivalent a.extend(b) zu sein. , wenn ich sage a[(len(a):] nicht ich meine a[4:<end of list a>] = b die

`nichts in a = b die

ist

[]

Warum ich [1,2,3,4,5,6,7,8] als Ergebnis bin immer?

Antwort

10

Die Slice-Zuweisung kann verwendet werden, um eine Sequenz in eine andere einzufügen (veränderbar).

>>> a = [1, 2, 3] 
>>> a[1:1] = [4, 5] 
>>> a 
[1, 4, 5, 2, 3] 

Ihr Beispiel ist einfach eine Instanz des Einfügens am Ende.

+0

Schöne klare Antwort :-) –

1

Die Slice-Notation ist [start : stop]. Die Zuweisung zu einem Listen-Slice wie [start:] bewirkt, dass die rechte Sequenz bei Index start eingefügt wird. Aber da es keinen stop Teil des Slices gibt, wird immer die gesamte Sequenz hinzugefügt (ohne obere Grenze).

In Ihrem Fall fügen Sie den Index 4 ein, der noch nicht existiert, und fügt ihn am Ende der ursprünglichen Sequenz ein.

Python Docs 3.1.4 Lists