Python中列表元素与整数比较触发TypeError的问题及代码疑问
问题解决与验证
1. 类型错误的原因与修复
你的ageArray初始化代码生成的是嵌套列表(每个元素都是一个包含单个age值的子列表):
ageArray = [[amoeba.age] for amoeba in amoebas]
比如当amoeba的age是5时,ageArray[i]的值是[5],这是一个列表对象,和整数10比较自然会触发TypeError。
修复方案二选一:
- 方案一:修改初始化代码,直接存储age值而非嵌套列表:
ageArray = [amoeba.age for amoeba in amoebas] - 方案二:保持初始化不变,修改判断条件,访问子列表的第一个元素:
if ageArray[i][0] >= 10 and ageArray[h][0] <= 10:
2. amoeba.age加1的代码验证
你写的age自增代码是正确的:
for amoeba in amoebas: amoeba.age = amoeba.age + 1
也可以简化成更Pythonic的写法:
for amoeba in amoebas: amoeba.age += 1
另外,你提到尝试用lambda操作ageArray未成功——其实完全没必要这么做:因为你已经直接修改了amoeba对象的age属性,只要在每次while循环开始时重新初始化ageArray(用方案一的正确写法),它就会自动同步最新的age值,不需要额外用lambda维护。
内容的提问来源于stack exchange,提问作者AtomProgrammer
相关产品推荐
相关产品推荐

