当我尝试的时候
anylist.append([var[x:y].split()])
我得到了错误
AttributeError: 'list' object has no attribute 'split'
但是
anylist.append([var[x].split()])
很好用。 那么有人能告诉我:我怎样才能在列表中添加一系列变量,同时仍然得到要拆分的项呢?你知道吗
干杯
附言: 这应该被合并到一个循环中
for j in range(0,z):
所以,对于每一个j,我希望变量的一个不同的范围是一个项,这个项应该被拆分。你知道吗
编辑 好吧,我试着把我的问题说得更清楚,所以最好理解: 我想处理以下格式的文件
480
STEP: 1
Ele x y z
Ele x y z
...
480
STEP: 2
Ele x y z
...
现在,每个块都以“480”开头,长度为480+2行(因为块中的前两行是2行)。你知道吗
我试图实现的是将每个块“STEP:x”放入列表的一个项目中,并且应该拆分此步骤中的行。 因此,清单最后应该是
[
[[ 480],[STEP:1],[Ele, x, y, z],[Ele, x, y, z],...],
[[ 480],[STEP:2],[Ele, x, y, z],[Ele, x, y, z],...],
[[ 480],[STEP:3],...]]
]
这样以后我就可以处理
if 3 <= float(anylist[0][3][1] <= 5
... do something...
我想检查的地方是,在第一个块(步骤:1)中,x值是否在3到5之间。你知道吗
回到我的问题上来,我想这样做:
trj_list = []
for i in range(0,nsteps):
for j in range(0,nat):
trj_list.append(lines[j*nat:j*nat+nat])
文件的总长度为nat*nsteps。第一个循环通过nsteps=2001,第二个循环通过nat=482。 对于每个j,第二个循环应该将所有行(从0到482)附加到列表中的一个列表中,并且应该拆分这些项。 所以第一个循环应该是步骤:x'第二个循环应该遍历一个块中的所有行(即482行)。你知道吗
但是问题出现在上一次的trj中_列表.append'命令,因为我不能拆分,当我在'lines[x:y]'中使用范围时。你知道吗
我还发现了另一种方法:
我认为这也不应该加载太多的内存
问题是,如果你是切片,你会得到一个列表,而不是单个对象。您可以使用简单的列表理解来对列表中的每个对象/字符串进行拆分,不过:
相关问题 更多 >
编程相关推荐