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

为何Sequence类的getValueRange等方法会触发TypeError?

解决Sequence类中TypeError: 'int' object is not iterable的问题

错误原因

你代码里的getValueRange和getValueList方法中,用了nums += self.getValueAt(i)来添加元素,但+=操作符作用于列表时,要求右侧必须是可迭代对象(比如列表、元组这类能逐个取出元素的结构)。而getValueAt返回的是单个整数,整数不属于可迭代对象,所以触发了TypeError。

修复方案

有两种简单的修复方式,选一种就行:

方式1:用append()方法添加单个元素

append()是列表专门用来添加单个元素的方法,直接把整数传进去就行:

def getValueRange(self, pos1: int, pos2: int) -> list:
    nums = []
    for i in range(pos1, pos2):
        nums.append(self.getValueAt(i))
    return nums

def getValueList(self, pos_list: list):
    nums = []
    for i in pos_list:
        nums.append(self.getValueAt(int(i)))
    return nums

方式2:把整数包装成列表再用+=

如果习惯用+=,可以把单个整数放进列表里,让右侧变成可迭代对象:

def getValueRange(self, pos1: int, pos2: int) -> list:
    nums = []
    for i in range(pos1, pos2):
        nums += [self.getValueAt(i)]
    return nums

def getValueList(self, pos_list: list):
    nums = []
    for i in pos_list:
        nums += [self.getValueAt(int(i))]
    return nums

修复后的完整代码

class Sequence:
    def __init__(self, term: str, var: str):
        self.term = term
        self.var = var

    def getValueAt(self, pos: int) -> int:
        return int(eval(self.term.replace(self.var, str(pos))))

    def getValueRange(self, pos1: int, pos2: int) -> list:
        nums = []
        for i in range(pos1, pos2):
            nums.append(self.getValueAt(i))
        return nums

    def getValueList(self, pos_list: list):
        nums = []
        for i in pos_list:
            nums.append(self.getValueAt(int(i)))
        return nums


sq = Sequence("5*x-6", "x")
print(sq.getValueAt(1))
print(sq.getValueAt(2))
print(sq.getValueRange(4, 44))
print(sq.getValueList([5, 9, 27]))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:55:16