使用指定的分隔符加入一个切碎的列表

bad*_*ker 2 python split list chunks python-3.x

我有一个未知数量的样本,总是成对出现,例如11 2233 44.

我将所有样本存储在一个列表中[11, 22, 33, 44],然后成对[[11, 22], [33, 44]]地将其删除以获得嵌套列表.

所有这些都是使用这些对并稍后用指定的分隔符显示它们,例如11:22.

我有这个功能来完成聚合数据和拆分列表的工作:

def chop_it_up(array, chunk):
    for i in range(0, len(array), chunk):
        yield array[i:i+chunk]

n_samples = int(input("Number of samples: "))

list_of_samples = []
for i in range(n_samples):
    list_of_samples.extend(list(map(int, input().strip().split(' '))))

chunks = list(chop_it_up(list_of_samples, 2))

print(':'.join(str(x) for x in chunks))
Run Code Online (Sandbox Code Playgroud)

输入的示例如下:

26 34 78 94 51 130

但是,代码的最后一行产生了这个:

[11, 22]:[33, 44]
Run Code Online (Sandbox Code Playgroud)

期望的输出应该是:

[11:22] [33:44]
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

Jea*_*bre 5

您正在加入列表表示,您希望使用冒号而不是逗号重建此表示.

我将执行以下操作(使用带空格的外部联接来连接生成的子列表表示):

chunks = [11, 22],[33, 44]  
print(" ".join(["[{}]".format(":".join(map(str,chunk))) for chunk in chunks]))
Run Code Online (Sandbox Code Playgroud)

打印:

[11:22] [33:44]
Run Code Online (Sandbox Code Playgroud)

解释解决方案的核心:

"[{}]".format(":".join(map(str,chunk))
Run Code Online (Sandbox Code Playgroud)

将每个数字转换chunk为字符串(因此str.join接受它)并将其传递给,str.format因为您似乎希望在备用表示中保留方括号.