Python问题,生成具有来自另一个列表的信息的列表

问题描述 投票:0回答:1

我想用python生成一个列表,该列表基于另一个列表中的信息。以下示例应说明我要传输的信息:

以下列表:

list_a=[0,0,0,0,0,0,0,0,0,1,2,3,4,0,0,0,0,1,2,0,0,0,0,1,2,3,4,5,0,0,0]

然后,我要生成的列表应如下所示:

list_b=[0,0,0,0,0,0,0,0,0,4,3,2,1,0,0,0,0,2,1,0,0,0,0,5,4,3,2,1,0,0,0]

我是这样开始的:

list_b=[]
list_b = [0] * list_a.__len__()         #create a list of nulls
for i in range (list_a.__len__()):
       if list_a(i)!=0:
            if list_a(i+1)=0:
                 list_b.insert(i-(list_a[i]-1),list_a[i])

但是我只将第一个元素插入到list_b中,并且仍然需要插入所有后续元素(例如,插入4,仍然需要插入3,2,1),解决方案/代码似乎太乱了。

任何人都知道一个优雅的解决方案吗?

提前感谢!

python list solution generate
1个回答
0
投票

不太清楚它的优雅/效率,但是以下是您的解决方案:

list_b = []
reverse_list = []
reverse = False
for i in list_a:
    if i == 0:
        if reverse == True:
            reverse = False
            list_b += reverse_list[::-1]
            reverse_list = []
        list_b.append(i)
    else:
        reverse = True
        reverse_list.append(i)
print(list_a)
print(list_b)

输出为:

[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 1, 2, 3, 4, 5, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 2, 1, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 5, 4, 3, 2, 1, 0, 0, 0]
© www.soinside.com 2019 - 2024. All rights reserved.