You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python新增范围判断提取原子坐标输出空列表问题排查

错误原因

你的判断条件存在两处核心问题,直接导致所有行都匹配失败,最终输出空列表:

  • 语法写法错误:Python中用于判断元素是否属于某个序列/范围的合法运算符只有in,不存在is in这种组合写法,属于无效语法。
  • 数据类型不匹配:从文件读取的内容经split()拆分后,所有元素都是字符串类型,i[5]也不例外;但range(1,288)包含的元素全是整数,字符串和整数的值永远不会相等,就算修正语法问题,判断条件也会始终返回False,无法进入追加坐标的代码分支。
    另外还有一个容易遗漏的区间规则问题:Python的range是左闭右开区间,你写range(1,288)实际覆盖的整数范围是1到287,288本身不在判断范围内。
修正方案
  1. 删除多余的is关键字,使用正确的in运算符做成员判断
  2. 做范围判断前,先将i[5]从字符串转换为整数,解决类型不匹配问题
  3. 如果需要包含288这个边界值,将range的结束参数设置为289

修正后的判断语句如下:

if i[0]=="ATOM" and i[2]=="CA" and i[4]=="A" and int(i[5]) in range(1, 289):

完整可运行的修正后代码(同步修复了原代码中print语句的缩进问题):

y = []
with open('insert my top secret super file here') as protein:
    for i in protein:
        i = i.split()
        coords = []
        if i[0] == "ATOM" and i[2] == "CA" and i[4] == "A" and int(i[5]) in range(1, 289):
            coords.append(float(i[6]))
            coords.append(float(i[7]))
            coords.append(float(i[8]))
            y.append(coords)
print(y)

内容的提问来源于stack exchange,提问作者Judeah Wallace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 03:30:49