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