python—编写格式化文件,无需打印固定数量的变量

python—编写格式化文件,无需打印固定数量的变量,python,format,Python,Format,我有这些代码行创建一个列表(其中包含不同数量的变量),并希望将它们放在一个输出文件中。东西在里面 outfile.write('%i ?????' % (bn, crealines[bn])) 我不知道如何准确地编写格式,因为输出的数字不同。 是否存在将输出放入不同列数的方法 *我看了看这个:。。。但在我的情况下,它们不会一个接一个地增加。 另外,我可以打印不带括号的列表吗 代码如下所示: 0 1 3 9 1 0 2 4 10 2 1 5 11 3 0 4 6 12 4 1 3 5 7 13

我有这些代码行创建一个列表(其中包含不同数量的变量),并希望将它们放在一个输出文件中。东西在里面

outfile.write('%i ?????' % (bn, crealines[bn]))
我不知道如何准确地编写格式,因为输出的数字不同。 是否存在将输出放入不同列数的方法

*我看了看这个:。。。但在我的情况下,它们不会一个接一个地增加。 另外,我可以打印不带括号的列表吗

代码如下所示:

0 1 3 9 
1 0 2 4 10
2 1 5 11
3 0 4 6 12
4 1 3 5 7 13  
5 2 4 8 14 
6 3 7 15 
7 4 6 8 16 
8 5 7 17
9  0 10 12 18
...

(#在本例中,我创建了一个“立方体”-矩阵-3x3)


使用print,我得到了以下信息(这是正确的):


我的想法是你可以用
打印bn,crealines[bn].sort()
,但我可能错了。(这是因为我无法测试您的代码。arange函数从何处导入?

我不太清楚您的问题,但我相信您希望按顺序打印变量
bn
,后跟它的邻居。如果是,此代码段说明了如何执行此操作:

>>> bn = 5
>>> neighbors = [10, 12, 2, 4]
>>> print bn, ' '.join(map(str, sorted(neighbors)))
这将导致此输出:

524102


根据您的具体需求,很少有提议(现在它们是相同的,但根据数据可能会有不同的行为):

输出:

5 [-1, 4, 8, 12]
5 [-1, 4, 8, 12]
5 [-1, 4, 8, 12]
谢谢@jaime

这解决了格式问题:

打印“{}{}”。格式(bn),.join(映射(str,crealines[bn]))

我使用vec=sorted(neights)对外部邻居进行排序,然后crealines[bn]已经排序

输出如下所示


5 2 4 8 14

你能澄清这个问题吗?我觉得你的意思是问——“我如何打印一个排序的数字列表”?如果我没有弄错你的问题,你想把一个长度不断变化的列表写入一个文件吗?既然您用空格分隔项目,用换行符分隔列表,为什么不简单地使用
“”。join(createlines)
?@jaime,但更重要的是打印没有固定元素数的格式化列表。看,有些输出有三项,另一些有五项,那么我不知道在打印的格式行中需要多少%1()谢谢@jaime!这解决了格式问题:打印“{}{}”。格式(bn),.join(map(str,crealines[bn])我在外部对邻居排序,然后crealines[bn]已经排序。输出结果如下5 2 4 8 14很高兴它解决了您的问题,请随意接受我的答案:我不知道您必须“接受”给定的答案:D
>>> bn = 5
>>> neighbors = [10, 12, 2, 4]
>>> print bn, ' '.join(map(str, sorted(neighbors)))
bn = 5
neighbours = [8, 12, -1, 4]
print "{} [{}]".format(bn, ', '.join(map(str, sorted(neighbours))))
print bn, repr(sorted(neighbours))
print bn, str(sorted(neighbours))
5 [-1, 4, 8, 12]
5 [-1, 4, 8, 12]
5 [-1, 4, 8, 12]