Python 使用指定的分隔符连接切碎列表

Python 使用指定的分隔符连接切碎列表,python,python-3.x,list,split,chunks,Python,Python 3.x,List,Split,Chunks,我的样本数量未知,总是成对出现,例如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("N

我的样本数量未知,总是成对出现,例如
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))
示例输入为:

26 34
78 94
51130

但是,代码的最后一行生成以下内容:

[11, 22]:[33, 44]
而所需的输出应为:

[11:22] [33:44]
我在这里缺少什么?

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

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

印刷品:

[11:22] [33:44]
解释解决方案的核心:

"[{}]".format(":".join(map(str,chunk))
将每个
chunk
数转换为string(因此
str.join
接受它),并将其传递给
str.format
,因为您似乎希望在替代表示法中保留方括号。

我相信可以简化:

>>> l = [11, 22, 33, 44]
>>> r = ["[{}:{}]".format(l[i], l[i+1]) for i in range(0, len(l), 2)]
>>> print(*r)
[11:22] [33:44]


这个答案避免使用多个
join
方法,而是使用单个列表理解。

我假设输入数据是
[11,22],[33,44]
而不是一个平面list@Jean-Françoisfare是对的,数据是一个嵌套列表(切碎的单个列表)。如果您只需要将项目成对打印,那么你就不必创建嵌套列表了。@nisemonoxide我试过了,它在一个平面列表上运行得很好,这实际上节省了一些输入。
>>> l = [11, 22, 33, 44]
>>> r = ["[{}:{}]".format(l[i], l[i+1]) for i in range(0, len(l), 2)]
>>> print(*r)
[11:22] [33:44]