如何在Python2.6中使用.split()从输出生成数组/列表

2024-10-02 00:37:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始学习Python(2.X),这里我试图从一个文件中“隔离”有用的数据集,这样我就可以进行计算了。在

我可以像这样拆分字典来打印数据行(数字):

for n in lines:
    lx=n.split()[3]
    print lx

我会从字典的索引3中得到我需要的数据集。在输出方面,在执行脚本后如下所示:

^{pr2}$

但我想把它们变成一个列表或数组

^{3}$

这样我就可以计算出这组数字(不仅仅是6个数字)。我知道我可以使用sum()len()和其他基本的内置数学函数进行计算。我试图保持它非常简单,而不使用itertools,我在这里看到了很多专门用于获取列表的总和或平均值的帖子。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 这就是我所拥有的:

f=open("1FKA.pdb",'r')
lines=f.readlines()
f.close()

for n in lines:
        lx=[]
        lxx=[]
        if n[:4]=="ATOM":
                lx=n.split()[3]
                lxx=[float(n.split()[3]) for n in lines]
                print lx
                print lxx

Traceback (most recent call last):
lxx=[float(n.split()[3]) for n in lines]
IndexError: list index out of range

Tags: 文件数据in脚本列表for字典数字
1条回答
网友
1楼 · 发布于 2024-10-02 00:37:33

使用列表理解:

[n.split()[3] for n in lines]

如果n.split()[3]提供了一个字符串,请尝试:

^{pr2}$

编辑:

您还需要在列表理解中过滤以“ATOM”开头的行,不要使用嵌套循环:

[float(n.split()[3]) for n in lines if n[:4]=="ATOM"]  #or n.startswith("ATOM") instead of n[:4]=="ATOM"

甚至:

[float(n.split()[3]) for n in lines if n.startswith("ATOM") and len(n.split())>3]

相关问题 更多 >

    热门问题