4

我有一个长 x 值的列表。该列表分为不同长度的子列表。然后我将这些子列表写入输出文件。有没有办法打印没有括号的子列表。

编辑澄清:

实际列表长 300 个子列表,其中包含 12250 个元素,并且随着我运行的每个场景而变化。显然,这是简化的。让我改变一些事情,看看是否会改变答案。

IE

List=[[1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11, 12, 15]]

输出是:

[1, 2, 3]
[4, 5, 6, 7]
[8, 9, 10, 11, 12, 15]

但我想要

1, 2, 3
4, 5, 6, 7
8, 9, 10, 11, 12, 15

我希望这个输出在一个新变量中,比如 ListMod,这样我就可以在一个单独的函数中使用 ListMod 来编写一个文件。该文件还调用 2 个其他列表,时间和大小,其中大小指定 ListMod 中行的长度。

这在多大程度上改变了你的答案?

4

4 回答 4

7

首先,答案:

file.write(','.join(map(repr, List))

由于多种原因,您的实际代码不可能写出您声称的内容:

  • 一个文件的write方法会给你一个TypeError如果你给它一个列表,而不是打印出来。你必须打电话strrepr在名单上才能得到你能得到的东西write
  • 调用stror repron a list 会在逗号和括号后放置空格。
  • 你的代码中至少有一个SyntaxError会阻止你走得那么远。

所以,在我解释如何解决它之前,我必须猜测你实际上在做什么。也许是这样的:

file.write(str(List))

如果是这样,__str__列表的方法是有效的:

'[' + ', '.join(map(repr, self)) + ']'

你想要这个没有括号和空格,所以它是:

','.join(map(repr, self))
于 2013-11-06T23:11:29.267 回答
3

您的输出格式似乎是 CSV。如果实际数据与提供的示例一样简单,那么您可以使用 python 的 csv writer:

import csv
with open('/tmp/myfile.txt', 'w') as f:
    csv_writer = csv.writer(f)
    csv_writer.writerows(List)
于 2013-11-06T23:12:22.417 回答
1

如果您使用的是 Python 3.x 或 2.6 以上版本并且不介意将print其用作函数:

from __future__ import print_function # ignore if on py 3.x

for line in List:
    print(*line, sep=',', file=file)
于 2013-11-06T23:15:33.143 回答
0
print '\n'.join(','.join(map(str, x)) for x in List)
于 2013-11-06T23:20:46.400 回答