删除列表中所有不以 python 中的数字结尾的元素

remove all elements in list that do not end in a number in python

我正在尝试通过删除未以 1、2 或 3 结束的行来对我拥有的数组进行排序。 到目前为止,我还不是很成功,我编写的代码如下所示:

这些行设置要在函数中使用的变量

import numpy as np

A=[]
B=[]
C=[]
file = open('glycine_30c.data', 'r')
bondsfile = open('glycine_30c.bonds', 'r')

这些行将 .data 和 .bonds 文件读入数组

for lines in file:
    eq = lines.split()
    A.append(str(eq))

for x in bondsfile:
    bon = x.split()
    B.append(str(bon))

这些行在这里(希望)删除列表 "B" 中不以 1,2 或 3 结尾的所有元素,然后将它们附加到新列表 "C"虽然那不是真的必要

for n in range(len(B)):
    if B[n].endswith(1,2,3) == True:
        C.append (B[n])
print C 

非常感谢任何帮助,谢谢

endswith() 的文档说明:

endswith(...)
    S.endswith(suffix[, start[, end]]) -> bool

    Return True if S ends with the specified suffix, False otherwise.
    With optional start, test S beginning at that position.
    With optional end, stop comparing S at that position.
    suffix can also be a tuple of strings to try.

即打电话

B[n].endswith(1,2,3)

实际上不会检查 B[n] 是否以 1、2、3 中的任何一个结尾。您可能想要的是类似于

的内容
B[n].endswith(("1", "2", "3"))

即传递单个元组参数。