I have a list in range (1 to 31).
The final list is l = [x, y, z]
You can see my code, it is work fine using three for loops:
JavaScript
x
13
13
1
l = range(1, 31)
2
x = ([j for (i, j) in enumerate(l) if i % 10 == 0])
3
y = ([j for (i, j) in enumerate(l) if i % 10 == 4])
4
z = ([j for (i, j) in enumerate(l) if i % 10 == 9])
5
l1 = [x, y, z]
6
print (l1)
7
8
9
l = range(1, 31)
10
x, y, z = ([j for (i, j) in enumerate(l) if i % 10 == 0]), ([j for (i, j) in enumerate(l) if i % 10 == 4]), ([j for (i, j) in enumerate(l) if i % 10 == 9])
11
l1 = [x, y, z]
12
print (l1)
13
The outputs is:
JavaScript
1
3
1
[[1, 11, 21], [5, 15, 25], [10, 20, 30]]
2
[[1, 11, 21], [5, 15, 25], [10, 20, 30]]
3
I tried to do it using only one for
loop.
JavaScript
1
9
1
l = ([(x,y,z) for (i1, x), (i2, y), (i3, z) in enumerate(l) if i1 % 10 == 0 and i2 % 10 == 4 and i3 % 10 == 9])
2
print l
3
4
# l = ([(x,y,z) for ((i, x), (i, y), (i, z)) in enumerate(l) if i % 10 == 0 and i % 10 == 4 and i % 10 == 9])
5
# print l
6
7
# l = ([(j1,j2,j3) for ((i1,i2,i3), (j1,j2,j3)) in enumerate(l) if i1 % 10 == 0 and i2 % 10 == 4 and i3 % 10 == 9])
8
# print l
9
I got this error:
JavaScript
1
3
1
l = ([(x,y,z) for (i1, x), (i2, y), (i3, z) in enumerate(l) if i1 % 10 == 0 and i2 % 10 == 4 and i3 % 10 == 9])
2
ValueError: need more than 2 values to unpack
3
I don’t know if I can do it or not.
please help me.
Advertisement
Answer
Try –
JavaScript
1
8
1
l = range(1, 31)
2
mylist = []
3
lst = [0, 4, 9]
4
for i in lst:
5
mylist.append([b for a, b in enumerate(l) if a % 10 == i])
6
7
print(mylist)
8
Or list comprehension –
JavaScript
1
2
1
mylist = [[b for a, b in enumerate(l) if a % 10 == i] for i in lst]
2