List parsing, mainly used to dynamically create lists
This article mainly talks about the usage of lambda, map(), and filter() combined with list parsing statements
List The basic syntax of parsing is: [expr for iter_var in iterable]
The core of this statement is the for loop, which iterates all entries of the iterable object. The preceding expr is applied to each member of the sequence, and the final result value is the list produced by the expression.
Let’s take an example
Test it in idle:
>>> [i for i in range(0,8)]
[0,1,2,3,4,5,6,7]
where i is expr in basic syntax It is also iter_val; in another way, we perform an operation on the value inside and multiply all members by 2
>>> [i*2 for i in range(0,8)]
[0, 2, 4, 6, 8, 10, 12, 14]
This is a list parsing written completely in accordance with the basic syntax
Extended version syntax: [expr for iter_val in iterable if cond_expr]
We can also expand and add some statements after it , filter the list; for example, we only need the number in this value that is divisible by 2
>>> [i for i in range(1,8) if i%2 == 0]
[2, 4, 6]
This kind of statement is similar to using filter, so we can also use python’s built-in filter function to achieve the same value
>> ;> l = filter(lambda x:x%2==0, range(1,8))
>>> for i in l:
i
2
4
6
But I found no, there are some differences, because I did not print out the list directly. why? Because the return value of filter is a generator, the generator cannot know all the values. It can only get the next value through iteration
3. Map is used to achieve the same results as list parsing
[2, 4, 6, 8, 10, 12, 14]
Using it can get the same effect as [x * 2 for x in range(1,8)], but use the latter More efficient than map()
4. Generate matrix
>>> [(x,y) for x in range(0,3) for y in range(0,5)]
[(0, 0), (0, 1), ( 0, 2), (0, 3), (0, 4),
(1, 0), (1, 1), (1, 2), (1, 3), (1, 4),
(2, 0), (2, 1), (2, 2), (2, 3), (2, 4)]
You can also find more information on reference list parsing in PEP 202
The above is the detailed content of python list parsing. For more information, please follow other related articles on the PHP Chinese website!