background image

Αυτό είναι επίσης ισοδύναμο με  

squares=list(map(lambda 

x:   x**2,   range(10)))

,   αλλά   είναι   πιο   συνοπτικό   και 

ευανάγνωστο. 

H  κατανόηση   μιας   λίστας   αποτελείται   από   αγκύλες 

περιέχουν μια έκφραση που ακολουθείται από ένα διατάξεις if 
και for. Το αποτέλεσμα θα είναι μια νέα λίστα που προκύπτει 
από   τον  υπολογισμό   της  έκφρασης   στο  πλαίσιο   των  διατάξεων 
for  και  if.   Για   παράδειγμα,   αυτή   η   listcomp   συνδυάζει   τα 
στοιχεία των δύο καταλόγων και αν δεν είναι ίσα:

>>> 

[(x, y) 

for

 x 

in

 [

1

,

2

,

3

for

 y 

in

 [

3

,

1

,

4

if

 x 

!=

 y]

[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

Και ισοδυναμεί με:

>>> 

combs 

=

 []

>>> 

for

 x 

in

 [

1

,

2

,

3

]:

... 

    

for

 y 

in

 [

3

,

1

,

4

]:

... 

        

if

 x 

!=

 y:

... 

            combs

.

append((x, y))

...
>>> 

combs

[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

>>> 

vec 

=

 [

-

4

-

2

0

2

4

]

>>> 

# create a new list with the values doubled

>>> 

[x

*

2

 

for

 x 

in

 vec]

[-8, -4, 0, 4, 8]

>>> 

# filter the list to exclude negative numbers

>>> 

[x 

for

 x 

in

 vec 

if

 x 

>=

 

0

]

[0, 2, 4]

>>> 

# apply a function to all the elements

>>> 

[

abs

(x) 

for

 x 

in

 vec]

[4, 2, 0, 2, 4]

>>> 

# call a method on each element

>>> 

freshfruit 

=

 [

'  banana'

'  loganberry '

'passion 

fruit  '

]

>>> 

[weapon

.

strip() 

for

 weapon 

in

 freshfruit]

http://arch.icte.uowm.gr

 - A Mini greek notebook for Learning Python Programming 

36