background image

... 

]

Η παρακάτω λίστα μεταφέρει τις γραμμές και σε στήλες:

>>> 

[[row[i] 

for

 row 

in

 matrix] 

for

 i 

in

 

range

(

4

)]

[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

Όπως   είδαμε   παραπάνω,   η   ένθετη   listcomp   αξιολογείται 

στο πλαίσιο του γι 'αυτό που ακολουθεί, έτσι ώστε αυτό το 
παράδειγμα να είναι ισοδύναμο με:

>>> 

transposed 

=

 []

>>> 

for

 i 

in

 

range

(

4

):

... 

    transposed

.

append([row[i] 

for

 row 

in

 matrix])

...
>>> 

transposed

[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

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

>>> 

transposed 

=

 []

>>> 

for

 i 

in

 

range

(

4

):

... 

    

# the following 3 lines implement the nested 

listcomp

... 

    transposed_row 

=

 []

... 

    

for

 row 

in

 matrix:

... 

        transposed_row

.

append(row[i])

... 

    transposed

.

append(transposed_row)

...
>>> 

transposed

[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

Στην   πραγματικότητα,   θα   πρέπει   να   προτιμάτε 

ενσωματωμένες λειτουργίες σε πολύπλοκες καταστάσεις ροής. Η 
συνάρτηση  zip  () κάνει μια σπουδαία εργασία για αυτήν την 
περίπτωση χρήσης:

>>> 

list

(

zip

(

*

matrix))

[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]

Η εντολή del 

http://arch.icte.uowm.gr

 - A Mini greek notebook for Learning Python Programming 

38