Way to create a new list from iterable by transforming the items.
Syntax:
[ output_expression for item in iterable [ conditions ] ]
numbers = [1, 2, 3, 4, 5, 6]
squares = [number**2 for number in numbers]
print(squares)
#Output: [1, 4, 9, 16, 25, 36]
Using if condition
We can use if condition to filter out some elements.
numbers = [1, 2, 3, 4, 5, 6]
squares = [number**2 for number in numbers if number > 2]
print(squares)
#Output: [9, 16, 25, 36]
Using multiple if condition (ANDing)
We can use multiple if condition to filter out elements. All if conditions will be ANDed
numbers = [1, 2, 3, 4, 5, 18, 30]
list_1 = [number for number in numbers
if number % 2 == 0
if number % 3 == 0]
print(list_1)
#Output: [18, 30]
Using ‘in’ statement (ORing)
'in' keyword can be used to create condition statement.
numbers = [1, 2, 3, 4, 5, 18, 30]
list_2 = [number for number in numbers
if number % 3 in (1, 2)]
print(list_2)
#Output: [1, 2, 4, 5]
Using if condition in output expression
If candition can be used to alter the resulting list.
numbers = [1, 2, 3, 4, 5]
list_3 = ["Even" if number % 2 == 0
else "Odd" for number in numbers]
print(list_3)
#Output: ['Odd', 'Even', 'Odd', 'Even', 'Odd']
Using the if-else statement
Ladder of if-else statement can be used to alter the resulting list.
numbers = [25, 35, 50, 90]
list_4 = ["First" if number >= 60
else "Second" if 45 <= number < 60
else "Third" if 33 <= number < 45
else "Failed"
for number in numbers]
print(list_4)
# Output: ['Failed', 'Third', 'Second', 'First']
Nesting list comprehension
Nesting of list comprehension is just like the nested for loops.
list_6 = [[n for n in range(1, 4)] for number in range(3)]
print(list_6)
# Output: [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
Dictionary comprehension
Dictionary comprehension works the same like lists. The difference is that we will work of (key, value) pairs.
dict_1 = {'a': 1, 'b': 3, 'c': 4}
dict_2 = {key: value**2 for key, value in dict_1.items()}
print(dict_2)
# Output: {'a': 2, 'b': 6, 'c': 8}
Set comprehension
Set can be created just like the list are comprehended.
numbers = [1, 2, 3, 4, 5]
set_1 = {number*2 for number in numbers}
print(set_1)
# Output: {2, 4, 6, 8, 10}
If you have some cool tricks regarding this topic, feel free to comment below. Thanks.
Comments
Post a Comment