I was wondering how would you can replace values of a list using list comprehension. e.g.
theList = [[1,2,3],[4,5,6],[7,8,9]]
newList = [[1,2,3],[4,5,6],[7,8,9]]
for i in range(len(theList)):
for j in range(len(theList)):
if theList[i][j] % 2 == 0:
newList[i][j] = 'hey'
I want to know how I could convert this into the list comprehension format.
You can just do a nested list comprehension:
theList = [[1,2,3],[4,5,6],[7,8,9]]
[[x if x % 2 else 'hey' for x in sl] for sl in theList]
returns
[[1, 'hey', 3], ['hey', 5, 'hey'], [7, 'hey', 9]]
new_list2 = [["hey" if x %2 == 0 else x for x in row]
for row in theList]
theList = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
newList = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for i in range(len(theList)):
for j in range(len(theList)):
if theList[i][j] % 2 == 0:
newList[i][j] = "hey'ere"
new_list2 = [["hey'ere" if x %2 == 0 else x for x in row]
for row in theList]
assert newList == new_list2
Or if you are literally replacing items in newList
based on values in theList
you can do:
newList = [[10, 20, 30], [40, 50, 60], [70, 80, 90]]
newList[:] = [["hey" if x % 2 == 0 else y for x, y in zip(row1, row2)]
for row1, row2 in zip(theList, newList)]
print(newList)
[[10, 'hey', 30], ['hey', 50, 'hey'], [70, 'hey', 90]]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With