24小时热门版块排行榜    

Znn3bq.jpeg
查看: 500  |  回复: 2

lemon4113

捐助贵宾 (初入文坛)

[求助] 循环读取文本并赋值给二维列表,出错 已有1人参与

虽然有现成的bandplot.pl,但还写了个从vasp的OUTCAR给出能带的python,这是其中一部分,希望查找“occupation”,并将其随后的第2到13行中的数据的第二列付给x[k,b],经测试发现,在b循环内x[k,b]正常,但是循环结束后,所有的x[k]都变成了x[100],(如x[k]和x[k-1]的值都是x[100],共101个K点),不知道是哪里的问题。(另,若将k循环改为rang(101),也会出错,)请指教。(由于显示问题x[k,b]表示x【k】【b】)
#!/usr/bin/python
import sys
f = open("OUTCAR"
lines=f.readlines()
l=len(lines)
i= 0
j= 0
E= 0
x=[[0,]*12]*101
k=-1
while  i< l:
    if 'occupation' in lines:
        k+=1
        for b in range(12):
            j=i+b+1
            x[k,b]=lines[j].split()[1]
        i+=15
        print x[k-1]
        print x[k]
    else:
        i+=1
回复此楼

» 猜你喜欢

vasp薄膜
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

virtualzx

木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
lemon4113: 金币+20, ★★★很有帮助, 非常好 2016-06-28 09:14:33
这一行有问题
x=[[0,]*12]*101

你看一下mutable和immutable object的概念。总的来说,你这里定义的根本不是二维数组。x是同一个列表重复101次。因此赋值时所有行都同时变。它们永远都是一样的。

python的list其实是小的子列表的双链表,它可以随意延长,速度不受影响。另外它相当于是一个指针列表,不是数组。没有必要提前分配空间指定大小,只要x=[], 然后用append来增加元素就可以了。

如果非要分配空间,可以用list comprehension
x = [0 for  i in xrange(101) for j in xrange(12)]

你还有很多用法不大合适的,比如打开文件最好用with结构,读取文件最好不要一下全部读入内存。
2楼2016-06-27 23:02:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lemon4113

捐助贵宾 (初入文坛)

引用回帖:
2楼: Originally posted by virtualzx at 2016-06-27 23:02:16
这一行有问题
x=*101

你看一下mutable和immutable object的概念。总的来说,你这里定义的根本不是二维数组。x是同一个列表重复101次。因此赋值时所有行都同时变。它们永远都是一样的。

python的list其实是小 ...

谢谢virtualzx的回复,指出了我的错误,并给出响应建议,同时还使我了解了一些对我而言的新东西,受教了。正在尝试修改。
vasp薄膜
3楼2016-06-28 09:14:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 lemon4113 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 国自然面上和省基金B类撒花 +16 花田半亩~白 2026-04-21 16/800 2026-04-23 03:04 by 魅力紫翼
[考研] 有没有学校收留 +3 蒋昌鹏qtj 2026-04-20 3/150 2026-04-22 20:25 by 学员JpLReM
[考研] 312求调剂 +3 山河似你温柔 2026-04-22 3/150 2026-04-22 20:17 by 学员JpLReM
[考博] 华师大读博 +3 xq83 2026-04-22 5/250 2026-04-22 10:42 by xq83
[教师之家] 又一批高校组建人工智能学院 师资行吗 不是骗人吗 +5 yexuqing 2026-04-19 5/250 2026-04-22 10:01 by easeheart
[考博] 申博/考博 +4 啃面包的小书虫 2026-04-17 8/400 2026-04-21 16:26 by 啃面包的小书虫
[考研] 295分求调剂 +6 ?要上岸? 2026-04-17 6/300 2026-04-21 08:18 by Equinoxhua
[考研] 085600材料与化工调剂 5+3 孜孜不倦2002 2026-04-19 6/300 2026-04-20 21:25 by babero
[论文投稿] 有没有接收比较快的sci期刊呀,最好在一个月之内的,研三孩子求毕业 20+4 之护着 2026-04-16 7/350 2026-04-20 15:45 by 豆豆7758
[考研] 337求调剂 +3 jyz04 2026-04-18 3/150 2026-04-20 12:24 by 研可安
[考博] 申博 +3 Xyyx. 2026-04-18 3/150 2026-04-20 10:44 by YuY66
[考博] 湖南大学刘巧玲课题组2026年第二批次博士研究生招生信息 +3 南风观火 2026-04-18 5/250 2026-04-20 10:13 by 南风观火
[考研] 求计算机方向调剂 +3 Toffee2 2026-04-16 6/300 2026-04-19 22:37 by ll叶
[考研] 294求调剂 +8 淡然654321 2026-04-17 9/450 2026-04-19 19:51 by Equinoxhua
[考研] 304求调剂 +8 castLight 2026-04-16 8/400 2026-04-19 17:14 by 中豫男
[考研] 求调剂 +10 小聂爱学习 2026-04-16 12/600 2026-04-19 16:51 by 中豫男
[考研] 求调剂 +6 苦命人。。。 2026-04-18 7/350 2026-04-19 16:27 by 中豫男
[考研] 接受任何调剂 +6 也就是栗子 2026-04-17 7/350 2026-04-18 17:20 by 涵竹刘
[考研] 260求调剂 +4 Zyt1314520.. 2026-04-17 5/250 2026-04-18 08:28 by babysonlkd
[有机交流] 二苯甲酮酸类衍生物 50+3 小白爱主人 2026-04-17 6/300 2026-04-17 18:47 by kf2781974
信息提示
请填处理意见