有条件地合并列表中的子列表

时间:2019-04-12 09:16:16

标签: python arrays python-3.x list

我有以下列表列表。

If last sublist has len>1:

x = [[0], [1, 2, 3], [4, 5], [6], [7, 8, 9], [10, 11, 12, 13], [15], [16, 17, 18]]

expected_output = [[0, 1, 2, 3], [4, 5], [6, 7, 8, 9], [10, 11, 12, 13], [15, 16, 17, 18]]

If last sublist has len==1:

x = [[0], [1, 2, 3], [4, 5], [6], [7, 8, 9], [10, 11, 12, 13], [15], [16, 17, 18], [19]]

expected_output = [[0, 1, 2, 3], [4, 5], [6, 7, 8, 9], [10, 11, 12, 13], [15, 16, 17, 18], [19]]

我正在尝试将长度为1的子列表与下一个子列表合并。

如果最后一个子列表的长度为1,我想保持原样。

我尝试编写以下代码。

xt = []
for i in range(len(x)-1):
    if len(x[i]) == 1:
        xt.append(x[i]+x[i+1])
#         del x[i+1]
    if len(x[i])>1:
        xt.append(x[i])
print(xt)

2 个答案:

答案 0 :(得分:2)

尝试一下:

ERROR: ArgumentError: unable to check bounds for indices of type Missing

答案 1 :(得分:1)

代码分析

xt = []
for i in range(len(x)-1):
    if len(x[i]) == 1:
        xt.append(x[i]+x[i+1])

这意味着您要在访问之前添加下一个子列表

#         del x[i+1]
    if len(x[i])>1:
        xt.append(x[i])

,并且没有子列表是否已被合并的历史记录。

print(xt)

建议

  • 以相反的方式访问列表,并每次检查上一个列表的长度是否为1。

OR

  • 保留上一个动作是否为合并的选项卡。

操作

如果您需要更多帮助,请大喊