создание вложенного списка из плоского списка с заданным измерением - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть плоский список, который я хочу преобразовать во вложенный список на основе определенного измерения, длина плоского списка может быть произвольной, но измерение должно соответствовать длине списка, например

[0,1,2,3,4,5,6,7]

создаст вложенный список

m = 2
n = 4
[[0,1][2,3][4,5][6,7]]

или

m = 4
n = 2
[[0,1,2,3][4,5,6,7]]

Я думаю об использовании списка для создания вложенного списка, но другой вариант также может добавить элемент из плоский список

a = [[i] * m for i in range(n)]

Ответы [ 2 ]

1 голос
/ 01 апреля 2020

Вы можете попробовать это:

m = 2
n = 4
nums = [i*m for i in range(1,n+1)]
[list(range(x,y)) for x, y in  zip([0] + nums, nums)]

ИЛИ

nums = [i*m for i in range(n)]
[list(range(z,z+m)) for z in (nums)]

Выход:

[[0, 1], [2, 3], [4, 5], [6, 7]]

Для

m = 4
n = 2

Выход:

[[0, 1, 2, 3], [4, 5, 6, 7]]
1 голос
/ 01 апреля 2020

Вот один вариант использования списочных представлений:

col = list(range(10))
[
    col[col.index(val):col.index(val) + m]
    for val in col[::len(col)//n]
]
...