首页 > 解决方案 > 将列表中项目的连续重复项打包到列表列表中,并根据该连续重复项的索引位置,对另一个列表执行相同操作

问题描述

我有两个列表(“状态”和“伏特”)。我想阅读“状态”列表并将该列表中特定项目的连续重复项打包到列表列表中。然后读取第二个列表(“伏特”)并根据第一个列表(“状态”)中连续重复项的索引位置,将第二个列表(“伏特”)中的项目打包或分组到列表列表中。 请帮助我,我尝试过的代码如下:

请注意:列表“状态”和“伏特”中的项目用空格分隔以显示我要创建的组并将它们放在另一个列表中。

Packed_status = []
Packed_volt = []
status = [1, 1, 1, 1,   0, 0, 0,     1, 1,     0, 0,     1, 1, 1,     0, 0, 0,     1, 1,     0]
volt = [2, 3, 4, 5,     1, 3, 7,     2, 6,     5, 3,     3, 8, 4,     9, 5, 3,     6, 2,     7]

for i in range(0, len(status), 1):
    if status[i] == 0:
        Packed_status.append(status[i])
        Packed_volt.append(volt[i])
print Packed_status
print Packed_volt

我得到的输出是:

[0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 3, 7, 5, 3, 9, 5, 3, 7]

我需要的输出是:

[[0, 0, 0], [0, 0], [0, 0, 0], [0]]
[[1, 3, 7], [5, 3], [9, 5, 3], [7]]

为第 2 个列表分组选择的项目应与第 1 个列表打包或分组的索引位置完全相同(对于连续重复)。

标签: pythonlist

解决方案


列表中的值存储为int. 所以空间不适用于划分列表。如果你还想回答。您可以使用 list 的值01.

尝试这个 :

Packed_status = []
Packed_volt = []
status = [1, 1, 1, 1,   0, 0, 0,     1, 1,     0, 0,     1, 1, 1,     0, 0, 0,     1, 1,     0]
volt = [2, 3, 4, 5,     1, 3, 7,     2, 6,     5, 3,     3, 8, 4,     9, 5, 3,     6, 2,     7]

count = 0
temp_volt = []
temp_status = []
for i in range(0, len(status), 1):
    if status[i] == 0:
        temp_status.append(status[i])
        temp_volt.append(volt[i])
        count = 1
    else:
        if count == 1:
            Packed_status.append(temp_status)
            Packed_volt.append(temp_volt)
            temp_volt = []
            temp_status =[]
            count = 0
if count == 1:
    Packed_status.append(temp_status)
    Packed_volt.append(temp_volt)
print Packed_status
print Packed_volt

输出 :

[[0, 0, 0], [0, 0], [0, 0, 0], [0]]
[[1, 3, 7], [5, 3], [9, 5, 3], [7]]

推荐阅读