def chunks(l, n):
for i in range(0, len(l), n):
yield l[i:i+n]
boleta.write(str(list(chunks(carrito, 3))))
我正在使用此代码创建每个元素的3个元素的子列表,但我需要逐行编写子列表,而不是全部在一行中。
我有什么:
[[1, '001', 40], [1, '002', 20]]
我需要什么:
[1, '001', 40]
[1, '002', 20]
答案 0 :(得分:3)
您不应该将整个结果转换为列表然后将其转换为字符串,您应该迭代通过输出,并将每个个人子列表转换为字符串。像:
for sublist in chunks(carrito, 3):
boleta.write(str(sublist))
boleta.write('\n')
或者你可以'\n'.join(..)
输出,然后写出结果字符串,如:
boleta.write('\n'.join(str(subl) for subl in chunks(carrito, 3)))
在某些系统上,'\n'
不是行分隔符。您可以使用os.linesep
:
from os import linesep
boleta.write(linesep.join(str(subl) for subl in chunks(carrito, 3)))