鱼C论坛

 找回密码
 立即注册
查看: 2009|回复: 8

[已解决]如何将两个列表的元素,写入一个dat文件中

[复制链接]
发表于 2018-12-20 13:22:47 | 显示全部楼层 |阅读模式

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

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

x
大家好,我在处理数据时遇到了一个问题,有两个列表,x[]与y[],我想用f.write(x[],y[])将数据写入out.dat文件中,可是write只能输入一个列表,于是我用zip字典将两个列表合一,但是写入的数据中有括号,我想消除括号!
代码如下:
with open('out.dat','w') as f:
    for  i  in range(a11,a22,1):
        x0=(han(i+1,0)-han(i,0))**2+(han(i+1,1)-han(i,1))**2+(han(i+1,2)-han(i,2))**2
        x1=math.sqrt(x0)
        x2+=x1
        x.append(x2)
    x*=b2
    #print(p)
    for j in range(2,b1-1,1):
        for k in range(c12,c12+b*b1,b1):
            y2=han(j+k,1)-fermi
            y.append(y2)
    #for m in range(0,b2*b-1,1):
    y11=zip(x,y)
    for line in y11:
        f.write(str(line)+'\n')
其中,x与y都是正常可输出的列表!
输出结果如下:
(0, -11.4)
(0.00195236, -11.3995)
(0.00390472, -11.398)
(0.00585709, -11.3956)
(0.00780945, -11.392199999999999)
(0.00976181, -11.3878)
(0.01171417, -11.3825)
(0.01366654, -11.3762)
我想除去这些括号,请问该如何做???
最佳答案
2018-12-20 15:31:47
本帖最后由 凌九霄 于 2018-12-20 15:35 编辑

你这个意思啊,你zip后,迭代一个个取出再write就OK了

for line in y11:
        f.write("{0} {1}{2}".format(line[0],line[1],'\n'))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-20 14:31:01 | 显示全部楼层
你用append或者extend先合并两个列表再write不可以么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-20 14:42:34 | 显示全部楼层
凌九霄 发表于 2018-12-20 14:31
你用append或者extend先合并两个列表再write不可以么?

如果合成一个列表,那么如何保证f.write中输出下面这种形式的数据呢?
1 2
2 3
2 3
2 3
3 4
2 3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-20 15:31:47 | 显示全部楼层    本楼为最佳答案   
本帖最后由 凌九霄 于 2018-12-20 15:35 编辑

你这个意思啊,你zip后,迭代一个个取出再write就OK了

for line in y11:
        f.write("{0} {1}{2}".format(line[0],line[1],'\n'))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-20 15:39:40 | 显示全部楼层
0 -11.4
0.00195236 -11.3995
0.00390472 -11.398
0.00585709 -11.3956
0.00780945 -11.392199999999999
0.00976181 -11.3878
0.01171417 -11.3825
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-20 15:53:19 | 显示全部楼层
凌九霄 发表于 2018-12-20 15:31
你这个意思啊,你zip后,迭代一个个取出再write就OK了

for line in y11:

大佬,如果我要在列表末尾中加入空格,该如何操作》
比如
1 2
2 3
3 2
4 5

1 2
2 3
3 3
4 5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-20 16:38:25 | 显示全部楼层
班定远 发表于 2018-12-20 15:53
大佬,如果我要在列表末尾中加入空格,该如何操作》
比如
1 2

加入一个判断,每写完一个列表,直接写入一个空行就是
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-20 17:56:50 | 显示全部楼层
凌九霄 发表于 2018-12-20 16:38
加入一个判断,每写完一个列表,直接写入一个空行就是

for line in y11:
        f.write("{0} {1}{2}".format(line[0],line[1],'\n'))
        if ((int(line)+1)%10==0):
            f.writelines('\n')
大佬,我是这样写的,但是line不是字符,无法整除,我的目的是是每隔10行,就换行,留下空行!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-20 22:40:14 | 显示全部楼层
班定远 发表于 2018-12-20 17:56
for line in y11:
        f.write("{0} {1}{2}".format(line[0],line[1],'\n'))
        if ((int(lin ...

为何要整除line,你随便设个变量,每迭代一次就自加一,到十就写空行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 16:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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