Python features functional programming tools like map and filter for mapping operations over sequences and collecting results.
Since this is such a common task in Python coding, Python made a new expression: the list comprehension which is more flexible than map and filter.
List comprehensions apply an arbitrary expression to items in an iterable rather than applying function.
It provides a compact way of mapping a list into another list by applying a function to each of the elements of the list.
List Comprehension vs. map
Python's built-in ord returns the ASCII integer code of a character:
If we want to collect the ASCII codes of all characters in a string, the most straightforward method is using a for loop and append the results to a list:
If we use map, we can get the same result with a single function call:
But, we can get the similar result from a list comprehension expression. While map maps a function over a sequence, list comprehensions map an expression over a sequence:
List comprehensions collect the result of applying an arbitrary expression to a sequence and return them in a new list.
The effect is similar to that of the for loop and the map call. List comprehensions become more convenient when we need to apply an arbitrary expression to a sequence:
If we had to use map, we would need to write a function to implement the square operation, probably, lambda instead of using a def:
This does the job. It's only a little bit longer that the list comprehension. For more advance kinds of expressions, however, list comprehensions will often require considerably less typing.
List Comprehension with filter
If we use if with list compression, it is almost equivalent to the filter built-in.
Let's make examples using both schemes.
All of these use the modulus operator %, to extract even numbers. The filter call here is not much longer that the list comprehension either.
But we can combine an if and a map, in a single expression:
We collect the squares of the even numbers from 0 to 9. The for loop skips numbers which the if on the right is false.
The expression on the left computes the squares.
The equivalent map requires a lot more work. We have to combine filter with map iteration:
Actually, list comprehensions are more general.
We can code any number of nested for loop in a list comprehension, and each may have an optional associated if test.
When for loop are nested within a list comprehension, they work like equivalent for loop statement:
More verbose version is:
Though list comprehensions construct lists, they can iterate over any sequence:
Here is a much more complicated list comprehension example:
The expression permutes even numbers from 0 through 4 with odd numbers from 0 through 4. Here is an equivalent version which is much more verbose:
List Comprehension with Matrixes
Let's see how the list comprehension works with Matrixes. For example, we have two 3 x 3 matrixes as lists of nested list:
We can index rows and columns within rows:
List comprehensions are powerful tools for processing such structures because they automatically scan rows and columns for us.
For example, though this structure stores the matrix by rows, to collect the second column we can simply iterate across the rows and pull out the desired column.
We can also iterate through positions in the rows and index as we go:
Here, we pulled out column 3 from M1. We can get the same result from the following list comprehension.
When to Use List Comprehension
We typically should use simple for loops when getting started with Python, and map.
Use comprehension where they are easy to apply. However, there is a substantial performance advantage to use list comprehension.
The map calls are roughly twice as fast as equivalent for loops. List comprehensions are usually slightly faster than map calls. This speed difference is largely due to the fact that map and list comprehensions run at C language speed inside the interpreter. It is much faster that stepping through Python for loop code within the Python Virtual Machine (PVM).
However, for loops make logic more explicit, we may want to use them on the grounds of simplicity. On the other hand, map and list comprehensions are worth knowing and using for simpler kinds of iterations if the speed of application is an important factor.
List comprehension is an elegant way to define and create list in python. We can create lists just like mathematical statements and in one line only. The syntax of list comprehension is easier to grasp.
python - Sample - python code :
Output:
After getting the list, we can get a part of it using python’s slicing operator which has following syntax :
python - Sample - python code :
So [: stop] will slice list from starting till stop index and [start : ] will slice list from start index till end Negative value of steps shows right to left traversal instead of left to right traversal that is why [: : -1] prints list in reverse order.
Output:
We can use filter function to filter a list based on some condition provided as a lambda expression as first argument and list as second argument, example of which is shown below :
Wikitechy tutorial site provides you all the learn python , python cursus online , python programming course free , where to learn
python programming , free online python course , online free python course , learn python coding online , python developers , python
certification free , python learning course , online course python
Related Searches to Python List Comprehension and Slicing
python list to stringpython list sortpython list operationspython list of tuplespython list emptypython list removepython list pushpython list to setpython list comprehensionspython list examplepython list comprehension if elsepython listaspython list listpython list of listspython lists and dictionariespython list add elementpython list findpython list comprehension filterpython list setpython list reversepython list generatorpython list get indexpython list comparisonpython list find indexpython list of dictionariespython list remove itempython list of functionspython list lastpython list constructorpython list itemspython list declarationpython list of arrayspython list creationpython list searchpython list getpython list comprehension examplesprint python listsort python listpython listepython list containspython list sizepython list lengthpython list slicingpython list codepython list to dictionarypython list return indexpython list deletepython list comprehension setpython comprehension listlambda function list comprehensioncomprehensions pythoncomprehension list pythonlist comprehension pythonpython dictionary comprehensioncomprehension listlist comprehension python examplespython generator comprehensionpython lambda in list comprehensionlist comprehension in pythonpython lambda function list comprehensionspython list comprehension and slicingpython slice list