Δημοσιεύτηκε: 03 Απρ 2010, 14:14
από sokoban4ever
@kofan
όταν κάνεις ανάθεση (=)σε μια λίστα
πχ lista[0] = αντικείμενοΑΒΓ
τότε αντικαθίσταται μόνο το πρώτο στοιχείο της λίστας -που μπορεί να είναι οποιοδήποτε αντικείμενο- με το αντικείμενοΑΒΓ

'Οταν κάνεις lista[0:1] = αντικείμενοΑΒΓ πρέπει το αντικείμενο να είναι iterable
δηλαδή πχ ένα string, μια λιστα , ένα set κλπ ...
πχ

Κώδικας: Επιλογή όλων
>>> a = [1, 2, 3, 4]
>>> a
[1, 2, 3, 4]
>>> a[0:0] =11
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only assign an iterable
>>> a[0:0] = 1.7444
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only assign an iterable
>>> a[0:0] = (-3,-2,-1,0)
>>> a
[-3, -2, -1, 0, 1, 2, 3, 4]
>>>

τέλος δες τι συμβαίνει και με την ανάθεση όταν έχεις ":" slices

Κώδικας: Επιλογή όλων
>>> a=[1,2,3,4]
>>> a[0:1]='test'
>>> a
['t', 'e', 's', 't', 2, 3, 4]
>>> a=[1,2,3,4]
>>> a[0:4]='test'
>>> a
['t', 'e', 's', 't']
>>> a=[1,2,3,4]
>>> a[0:0]='test'
>>> a
['t', 'e', 's', 't', 1, 2, 3, 4]
>>> a=[1,2,3,4]
>>> a[0:1]='test'
>>> a
['t', 'e', 's', 't', 2, 3, 4]
>>> a=[1,2,3,4]
>>> a[0:2]='test'
>>> a
['t', 'e', 's', 't', 3, 4]
>>> a=[1,2,3,4]
>>> a[0:3]='test'
>>> a
['t', 'e', 's', 't', 4]
>>> a=[1,2,3,4]
>>> a[0:4]='test'
>>> a
['t', 'e', 's', 't']
>>> a=[1,2,3,4]
>>> a[0:5]='test'
>>> a
['t', 'e', 's', 't']

ουσιαστικά προσθέτει τα αντικείμενα στην αρχή της λίστας (δες το a[0:0]='test' )