遍历2d列表并追加到其他多个列表

时间:2018-10-18 00:41:17

标签: python-3.x list

我有一个二维列表:

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

我想将2-D列表中每个列表的0到N-1存储在一个单独的列表中,并将1到N存储在另一个列表中。因此,我创建了两个要附加到与2-D 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])

但是for循环似乎每次都遍历所有列表。

我想得到结果

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 :(得分:1)

我认为列表理解可能会使您的代码更简洁:

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]]

答案 1 :(得分:0)

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 = [], []