List comprehension list of lists
Question:
I have a list of lists, and would like to use list comprehension to apply a function to each element in the list of lists, but when I do this, I end up with one long list rather than my list of lists.
So, I have
x = [[1,2,3],[4,5,6],[7,8,9]]
[number+1 for group in x for number in group]
[2, 3, 4, 5, 6, 7, 8, 9, 10]
But I want to get
[[2, 3, 4], [5, 6, 7], [8, 9, 10]]
How do I go about doing this?
Answers:
Use this:
[[number+1 for number in group] for group in x]
Or use this if you know map:
[map(lambda x:x+1 ,group) for group in x]
lista = [[i+3*(j-1) for i in range(1,4)] for j in range(1,4)]
print(lista)
# outputs [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Starting from the structure of your data:
x = [[1,2,3],[4,5,6],[7,8,9]]
Every group is a triplet [a,b,c], so I consider for readability a solution like:
«take every group [a,b,c] from the list and provide me the list of [a+1,b+1,c+1] »
x_increased = [ [a+1,b+1,c+1] for [a,b,c] in x ]
I have a list of lists, and would like to use list comprehension to apply a function to each element in the list of lists, but when I do this, I end up with one long list rather than my list of lists.
So, I have
x = [[1,2,3],[4,5,6],[7,8,9]]
[number+1 for group in x for number in group]
[2, 3, 4, 5, 6, 7, 8, 9, 10]
But I want to get
[[2, 3, 4], [5, 6, 7], [8, 9, 10]]
How do I go about doing this?
Use this:
[[number+1 for number in group] for group in x]
Or use this if you know map:
[map(lambda x:x+1 ,group) for group in x]
lista = [[i+3*(j-1) for i in range(1,4)] for j in range(1,4)]
print(lista)
# outputs [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Starting from the structure of your data:
x = [[1,2,3],[4,5,6],[7,8,9]]
Every group is a triplet [a,b,c], so I consider for readability a solution like:
«take every group [a,b,c] from the list and provide me the list of [a+1,b+1,c+1] »
x_increased = [ [a+1,b+1,c+1] for [a,b,c] in x ]