Seite 1 von 1
List und Integer problem
Verfasst: Montag 21. Februar 2011, 06:36
von mit
Hallo,
warum kann ich keine Integer Werte mit += in eine Liste einfuegen?
Code: Alles auswählen
>>> a = []
>>> a += 97
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>> a.append(97)
>>> a
[97]
>>> a += 'a'
>>> a
[97, 'a']
Vielen Dank im Voraus.
Re: List und Integer problem
Verfasst: Montag 21. Februar 2011, 07:32
von Zap
Hallo mit.
Das du mit += einen String anhängen kannst ist ehr "Glück".
Ich mutmaße mal, dass du dieses Verhalten nicht erwarten würdest.
Code: Alles auswählen
In [1]: a = [10]
In [2]: a += "Hallo"
In [3]: a
Out[3]: [10, 'H', 'a', 'l', 'l', 'o']
Über einen String wird iteriert und jedes einzelne Element wird der Liste hinzugefügt.
Wenn du zwingend die += Syntax benutzen möchtest dann musst du deine zu ergänzenden Objekte selber in einer Liste oder Tuple verpacken.
Code: Alles auswählen
In [4]: a = [10]
In [5]: a += [97]
In [6]: a
Out[6]: [10, 97]
Re: List und Integer problem
Verfasst: Montag 21. Februar 2011, 08:17
von BlackJack
@mit: ``+=`` auf Listen entspricht nicht der `append()`- sondern der `extend()`-Methode.
Code: Alles auswählen
In [55]: a = list()
In [56]: a.extend(42)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/home/bj/<ipython console> in <module>()
TypeError: 'int' object is not iterable
In [57]: a.extend('a')
In [58]: a
Out[58]: ['a']
In [59]: a.extend('spam')
In [60]: a
Out[60]: ['a', 's', 'p', 'a', 'm']
Re: List und Integer problem
Verfasst: Montag 21. Februar 2011, 10:45
von mit
Danke, aber welche Methode ist schneller?
Re: List und Integer problem
Verfasst: Montag 21. Februar 2011, 11:18
von BlackJack
@mit: Warum ist das wichtig? Du kannst durch messen herausfinden, welche bei der Python-Implementierung, die Du verwendest, schneller ist. Das Ergebnis würde ich aber nicht unbedingt verallgemeinern.
Ich finde `extend()` auf jeden Fall "lesbarer" weil man da einfacher in der Dokumentation nach suchen kann, und so vielleicht nicht den Fehler macht es mit `append()` zu verwechseln, wie das bei ``+=`` passieren kann.