Αυτό είναι επίσης ισοδύναμο με
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]
- A Mini greek notebook for Learning Python Programming
36