计算填充元组的行数

时间:2018-07-22 19:56:07

标签: python list count

作为解析PDB文件的一部分,我为希望作为浮点形式存在的特定原子提取了一组坐标(x,y,z)。但是,我还需要知道我提取了多少套坐标。

下面是我通过坐标提取得到的代码,我认为这将产生我提取了多少组三个坐标的计数。

使用len(coordinates)时,很遗憾,我得出的每组坐标都包含3个元组(x,y和z坐标)。

深入了解如何正确计算套数会有所帮助。我对Python还是很陌生,仍处于不确定我是否正确提出要求的阶段!

from sys import argv

with open(argv[1]) as pbd:
    print()
    for line in pbd:
        if line[:4] == 'ATOM':
            atom_type = line[13:16]
            if atom_type == "CA" or "N" or "C":

                x = float(line[31:38])
                y = float(line[39:46])
                z = float(line[47:54])

                coordinates = (x, y, z)

                # printing (coordinates) gives
                # (36.886, 53.177, 21.887)
                # (38.323, 52.817, 21.996)
                # (38.493, 51.553, 22.83)
                # (37.73, 51.314, 23.77)

                print(len(coordinates)) 

                # printing len(coordinates)) gives
                # 3
                # 3
                # 3
                # 3

谢谢您的见解!

2 个答案:

答案 0 :(得分:0)

如果您要计算文件中特定原子的数量,请尝试此

from sys import argv

with open(argv[1]) as pbd:
    print()
    atomCount = 0
    for line in pbd:
        if line[:4] == 'ATOM':
            atom_type = line[13:16]
            if atom_type == "CA" or "N" or "C":
                atomCount += 1
    print(atomCount)

它的作用基本上是,遍历整个pbd文件并检查每个原子的类型(似乎在数据的第四列中)。每次遇到所需的原子类型时,都会将计数器变量增加1。

答案 1 :(得分:0)

您的坐标变量是一个元组,元组是有序的且不可更改。使用列表更好。

coordinates=[]
for ....:
  coordinates.append([x,y,z])
len(coordinates) # should be 4 I guess.