bad*_*ker 2 python split list chunks python-3.x
我有一个未知数量的样本,总是成对出现,例如11 22或33 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)
我在这里错过了什么?
您正在加入列表表示,您希望使用冒号而不是逗号重建此表示.
我将执行以下操作(使用带空格的外部联接来连接生成的子列表表示):
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因为您似乎希望在备用表示中保留方括号.