List vs list comprehension
Python - List Comprehension
Previous
Next
List ComprehensionList comprehension offers a shorter syntax when you want to create a new list based on the values of an existing list. Example: Based on a list of fruits, you want a new list, containing only the fruits with the letter "a" in the name. Without list comprehension you will have to write a for statement with a conditional test inside: Example
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
Try it Yourself »
With list comprehension you can do all that with only one line of code: Example
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
Try it Yourself »
The Syntax
newlist = [expression for item in iterable if condition == True]
The return value is a new list, leaving the old list unchanged. ConditionThe condition is like a filter that only accepts the items that valuate to True. ExampleOnly accept items that are not "apple":
newlist = [x for x in fruits if x != "apple"]
Try it Yourself »
The condition if x != "apple" will return True for all elements other than "apple", making the new list contain all fruits except "apple". The condition is optional and can be omitted: ExampleWith no if statement:
newlist = [x for x in fruits]
Try it Yourself »
IterableThe iterable can be any iterable object, like a list, tuple, set etc. ExampleYou can use the range() function to create an iterable:
newlist = [x for x in range(10)]
Try it Yourself »
Same example, but with a condition: ExampleAccept only numbers lower than 5:
newlist = [x for x in range(10) if x < 5]
Try it Yourself »
ExpressionThe expression is the current item in the iteration, but it is also the outcome, which you can manipulate before it ends up like a list item in the new list: ExampleSet the values in the new list to upper case:
newlist = [x.upper()
for x in fruits]
Try it Yourself »
You can set the outcome to whatever you like: ExampleSet all values in the new list to 'hello':
newlist = ['hello' for x in fruits]
Try it Yourself »
The expression can also contain conditions, not like a filter, but as a way to manipulate the outcome: ExampleReturn "orange" instead of "banana":
newlist = [x if x != "banana" else "orange"
for x in fruits]
Try it Yourself »
The expression in the example above says: "Return the item if it is not banana, if it is banana return orange".
Previous
Next
|