#python-3.x
#python-3.x
Вопрос:
Я написал код с использованием цикла for, я хочу, чтобы код был понятен для понимания списка.
mainLst = [[2],[3],[4],[5],[6],[7],[8]]
lst2 = [[],[],[],[]]
const = 0
for i in range(4):
k = const
for j in range(4):
lst2[const].append(mainLst[k][0])
k = 1
const = 1
print(lst2)
Ожидание приведенного выше кода в понимание списка.
Ответ №1:
Если вы хотите преобразовать только часть цикла и по-прежнему использовать mainLst
переменную, то это будет выглядеть так:
mainLst = [[2],[3],[4],[5],[6],[7],[8]]
lst2 = [[mainLst[j k][0] for k in range(4)] for j in range(4)]
print(lst2)
# or if you still want to have initialized lst2 array, then:
lst2 = [[],[],[],[]]
[lst2[j].extend([mainLst[j k][0] for k in range(4)]) for j in range(4)]
print(lst2)
Оба выводят одно и то же:
[[2, 3, 4, 5], [3, 4, 5, 6], [4, 5, 6, 7], [5, 6, 7, 8]]
Ответ №2:
Может быть выполнено без создания других переменных, таких как k
и const
lst2 = [[i for i in range(j, j 4)] for j in range(2, 6)]
Ответ №3:
Вы можете использовать оператор itemgetter
with slice
для получения фрагментов подсписков из списка и chain.from_iterable
объединения подсписков в один список:
from operator import itemgetter
from itertools import chain
mainLst = [[2],[3],[4],[5],[6],[7],[8]]
[list(chain.from_iterable(itemgetter(slice(i, i 4))(mainLst))) for i in range(4)]
# [[2, 3, 4, 5], [3, 4, 5, 6], [4, 5, 6, 7], [5, 6, 7, 8]]