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]