24小时热门版块排行榜    

Znn3bq.jpeg
查看: 494  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 295求调剂 +5 ?要上岸? 2026-04-05 6/300 2026-04-11 08:27 by zhq0425
[考研] 296求调剂 +12 汪!?! 2026-04-10 14/700 2026-04-11 08:24 by zhq0425
[考研] 085404 298分求调剂 +10 呼啦呼啦呼呼呼 2026-04-10 11/550 2026-04-10 16:44 by wangy0907
[考研] 机械专368 有去处吗 +4 种大树 2026-04-10 4/200 2026-04-10 15:31 by jiajinhpu
[考研] 311求调剂 +11 xyp想读书 2026-04-10 12/600 2026-04-10 15:15 by solbeg
[考研] 求调剂 +11 雪逢冬 2026-04-10 11/550 2026-04-10 14:38 by Abskk
[考博] 博士自荐 +7 可可小胖 2026-04-08 7/350 2026-04-10 08:28 by kimhero
[考研] 269电子信息求调剂,可转专业 +9 独酌wl 2026-04-06 9/450 2026-04-09 20:55 by laoshidan
[考研] 267求调剂 +5 再忙也要吃饭啊 2026-04-09 5/250 2026-04-09 18:47 by stone_128
[考研] 368化学求调剂 +13 wwwwabcde 2026-04-07 14/700 2026-04-09 14:47 by heaven_jay
[考研] 265求调剂 +4 风说她早忘了 2026-04-07 4/200 2026-04-09 13:59 by only周
[考研] 086000调剂 +4 十七sa 2026-04-07 4/200 2026-04-09 09:27 by 壹往無前
[考研] 326分,一志愿沪9,求生物学调剂 +4 刘墨墨 2026-04-05 4/200 2026-04-08 06:22 by lijunpoly
[考研] 085602调剂 初试总分335 +3 19123253302 2026-04-06 3/150 2026-04-07 18:00 by jp9609
[考研] 325 调剂 +6 QQ小虾 2026-04-07 6/300 2026-04-07 15:17 by Ccclqqq
[考研] 第一志愿东南大学物理313,有科研竞赛获奖经历,希望物理复试调剂 +3 马内橙 2026-04-05 3/150 2026-04-06 10:32 by 蓝云思雨
[考研] 0855求调剂材料 +11 红桃灼灼 2026-04-04 12/600 2026-04-06 10:26 by 蓝云思雨
[考研] 319求调剂 +3 handrui 2026-04-05 3/150 2026-04-06 09:33 by jp9609
[考研] 化学357分,考研调剂 +11 .Starry. 2026-04-04 12/600 2026-04-06 06:28 by houyaoxu
[考研] 调剂 +4 是可乐不是可乐 2026-04-04 4/200 2026-04-04 19:41 by 唐沐儿
信息提示
请填处理意见