Перебирать 2d список и добавлять в несколько других списков - PullRequest
0 голосов
/ 18 октября 2018

У меня есть двумерный список:

lst = [[1,2,3,4,5,6,7,8,9],[11,12,13,14,15]]

Я хочу сохранить от 0 до N-1 каждого списка в двумерном списке в отдельном списке и от 1 до N в другом.Поэтому я создаю два новых списка для добавления, где они имеют ту же длину, что и двумерные lst:

alpha, beta = [[]]*len(lst), [[]]*len(lst)

Затем я запускаю этот код:

for i in range(len(lst)):
    for j in range(len(lst[i])-1):
        alpha[i].append(lst[i][j])
        beta[i].append(lst[i][j+1])

Но дляциклы кажутся повторяющимися во всех списках каждый раз.

Я хочу получить результат

alpha = [[1,2,3,4,5,6,7,8],[11,12,13,14]]
beta = [[2,3,4,5,6,7,8,9],[12,13,14,15]]

Вместо этого я получаю

alpha = [[1,2,3,4,5,6,7,8,11,12,13,14],[1,2,3,4,5,6,7,8,11,12,13,14]]
beta = [[2,3,4,5,6,7,8,9,12,13,14,15],[2,3,4,5,6,7,8,9,12,13,14,15]]

Определенно что-то естьчто-то не так с моим кодом, и я не могу его понять, любая помощь приветствуется!

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Я думаю, что понимание списка может сделать ваш код более лаконичным:

alpha = [i[:-1] for i in lst]
beta = [i[1:] for i in lst]

>>> alpha
[[1, 2, 3, 4, 5, 6, 7, 8], [11, 12, 13, 14]]
>>> beta
[[2, 3, 4, 5, 6, 7, 8, 9], [12, 13, 14, 15]]
0 голосов
/ 18 октября 2018
foo, bar= [], []

for i in range(len(lst)):
    for j in range(len(lst[i])-1):
        foo.append(lst[i][j])
        bar.append(lst[i][j+1])
    alpha[i] = foo
    beta[i] = bar
    foo, bar = [], []
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...