2016-04-26 3 views
-2

der Code ist hier:Über list.extend (Tupel)

>>> a = ['xyz'] 
>>> b = (5,) 
>>> a.extend(b) 
>>> a 
['xyz', 5] 

ich eine Menge Informationen überprüft, aber sie sagten beide mir, dass:

list.extend(seq) 
seq -- This is the list of elements 

Ich will wissen, warum Liste erweitern können ein Tupel.
thx.

Antwort

0

Wenn man sich die docstring für extend betrachten, werden Sie sehen, dass es von jedem iterable erweitert werden kann:

""" L.extend(iterable) -> None -- extend list by appending elements from the iterable """ 

Das heißt, Sie sind nur zu list s oder tuple s beschränkt, sondern auch string s , set s, und andere Iterables:

for iterable in ('ab', set([1, 2, 3]), {1:2, 3:4}, (0, 1)): 
    l = [1] 
    l.extend(iterable) 
    print(l) 

Diese Drucke:

[1, 'a', 'b'] 
[1, 1, 2, 3] 
[1, 1, 3] # Note dictionaries iterate over keys by default 
[1, 0, 1] 
-1

Die Listenmethode extend kann eine Listeninstanz von einem beliebigen iterierbaren Element erweitern, und das Tupel ist iterierbar. Es ist also das Gegenteil von dem, was Sie gesagt haben, das Tupel erweitert die Liste nicht umgekehrt.

-1

Es bedeutet genau was es sagt, was du getan hast: nimm eine list und erweitere sie um eine Sequenz. Es muss nicht genau der list Typ sein. Die Ressourcen, die Sie gefunden haben, könnten in diesem Punkt klarer gewesen sein.

Die official documentation sagt der folgende:

Die in der folgenden Tabelle definiert sind, auf wandelbar Sequenztypen. Das ABC collections.abc.MutableSequence wird bereitgestellt, um die korrekte Implementierung dieser Vorgänge für benutzerdefinierte Sequenztypen zu erleichtern.

In der Tabelle s eine Instanz eines wandelbaren Sequenztypen ist, ist t jedes iterable Objekt und x ist ein beliebige Objekt, das durch s (zum Beispiel jeder Art und Wert auferlegten Beschränkungen erfüllt, bytearray akzeptiert nur ganze Zahlen, die die Wertbeschränkung erfüllen 0 <= x <= 255).

...

s.extend(t) or s += t 

erstreckt s mit dem Inhalt t (zum größten Teil die gleichen wie s[len(s):len(s)] = t)

So a von Ihrem Beispiel kann ein beliebiger veränderbarer Sequenztyp sein, z. B. list und b kann eine beliebige Sequenz sein, wie eine tuple.