鱼C论坛

 找回密码
 立即注册
查看: 1301|回复: 5

[已解决]我想把一个数组按照一定的顺序写入文件中,应该怎么办?

[复制链接]
发表于 2020-1-4 10:47:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
比如有一个这样的数组a = [1,2,3,4,5,6,7,8,9]
我想在文件中出现这样的格式:
1   1    2    3
2   4    5    6
3   7    8    9
如何去编程才能达到这样的效果呢?求助大佬
最佳答案
2020-1-4 11:30:48
  1. a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
  2. b = list(zip(*[iter([1, 2, 3, 4, 5, 6, 7, 8, 9])] * 3))
  3. f = open("file.txt", "w")
  4. for i in range(len(b)):
  5.     # 格式化字符串
  6.     f.write(f"{i + 1}    " + "    ".join([str(j) for j in b[i]]) + "\n")
  7. f.close()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-1-4 11:30:48 | 显示全部楼层    本楼为最佳答案   
  1. a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
  2. b = list(zip(*[iter([1, 2, 3, 4, 5, 6, 7, 8, 9])] * 3))
  3. f = open("file.txt", "w")
  4. for i in range(len(b)):
  5.     # 格式化字符串
  6.     f.write(f"{i + 1}    " + "    ".join([str(j) for j in b[i]]) + "\n")
  7. f.close()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-4 12:07:15 | 显示全部楼层
本帖最后由 yjsx86 于 2020-1-4 12:08 编辑
  1. a = [1, 100, 3, 99, 5, 1000, 7, 33, 9, 308]
  2. line_numbers = len(a) // 3 if len(a) % 3 == 0 else (len(a) // 3) + 1
  3. a = iter(a)
  4. for line in range(line_numbers):
  5.     print(line+1, end=" ")
  6.     for i in range(3):
  7.         try:
  8.             print(next(a), end=" ")
  9.         except StopIteration:
  10.             break
  11.     print()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-4 12:08:54 | 显示全部楼层
这个b这样处理是什么意思?能直接放入一个矩阵进去吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-4 12:12:47 | 显示全部楼层
挣扎起飞 发表于 2020-1-4 12:08
这个b这样处理是什么意思?能直接放入一个矩阵进去吗?

如果 a 是 [1, 2, 3, 4, 5, 6, 7, 8, 9],b 就是 [(1, 2, 3), (4, 5, 6), (7, 8, 9)]。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-4 12:38:20 | 显示全部楼层

from scipy import linalg
import numpy as np
x = linalg.solve(zonggang,waili)
xuhao = []
for i9 in range (1,826):
    xuhao.append(i9)
a = xuhao
b = x
f = open("tecplot.txt", "w")
for i in range(len(b)):
    # 格式化字符串
    f.write(f"{i + 1}    " + "    ".join([str(j) for j in b]) + "\n")
f.close()


---------------------------------------------------------------------------TypeError                                 Traceback (most recent call last)<ipython-input-3-89c9dff2c7ab> in <module>
    356 for i in range(len(b)):
    357     # 格式化字符串
--> 358     f.write(f"{i + 1}    " + "    ".join([str(j) for j in b]) + "\n")
    359 f.close()
TypeError: 'numpy.float64' object is not iterable
不知道为什么,出错了,是跟上面的用的函数有关吗?应该怎么改啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-25 21:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表