Skip to main content
 首页 » 编程设计

python之如何每行打印几个数组元素到文本文件

2025年05月04日13zhoujg

我有一个一维数组,例如arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ...] 任意长度。

如何将其打印到文本文件(整数/ float 以空格分隔),以便每 7 个元素都打印在文本文件的同一行上?

所以我希望文本文件看起来像这样:

第 1 行:1 2 3 4 5 6 7

第 2 行:8 9 10 11 12 13 14

请您参考如下方法:

您的问题可以分为三个部分:

  1. 如何将任意大小的列表分成特定长度的 block
  2. 如何使用空格作为分隔符打印整数/ float 列表
  3. 如何写入文件

将任意大小的列表分成特定长度的 block

使用 grouper 方法,如 this answer 中所述:

import itertools 
 
def grouper(n, iterable): 
    it = iter(iterable) 
    while True: 
       chunk = tuple(itertools.islice(it, n)) 
       if not chunk: 
           return 
       yield chunk 

您可以轻松地将任意长度的列表拆分为所需长度的 block 。例如:

>>> arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] 
>>> for chunk in grouper(7, arr1): print chunk 
...  
(1, 2, 3, 4, 5, 6, 7) 
(8, 9, 10, 11, 12, 13, 14) 
(15, 16) 

使用空格作为分隔符打印整数/ float 列表

将列表加入字符串的标准方法是使用 string.join() .但是,这仅适用于字符串列表,因此我们需要首先将每个元素转换为其字符串表示形式。这是一种方法:

>>> a = [1, 2, 3, 4] 
>>> print " ".join(str(x) for x in a) 
1 2 3 4 

在前面的例子中使用这个方法,我们得到:

>>> for chunk in grouper(7, arr1): 
...   print " ".join(str(x) for x in chunk) 
...  
1 2 3 4 5 6 7 
8 9 10 11 12 13 14 
15 16 

这几乎就是您想要的输出。现在我们需要做的就是将其写入文件。

写入文件

with open("outfile.txt", "w") as f: 
  for chunk in grouper(7, arr1): 
    f.write(" ".join(str(x) for x in chunk) + "\n") 

有关详细信息,请参阅 Reading and Writing Files .