【发布时间】:2022-01-20 17:11:46
【问题描述】:
我正在使用列表推导来生成包含两个值的产品列表,并且看到了 TypeError。下面是一个简化的示例。
def exp_n(n):
k = 5
s = 1
a = [5*max(x+s-K) for x in range(0,n)]
print(a)
exp_n(10)
TypeError: 'int' object is not iterable
从查看其他帖子来看,这似乎通常与在 forloop 中定义的可迭代对象返回不可迭代对象有关。但在这里,range(0,n) 肯定是可迭代的。任何想法是什么问题?
【问题讨论】:
-
x+s-K是一个数字。max(x+s-K)你想要什么? -
max(x+s-K): K 未定义,max需要一个可迭代的而不是整数。 -
问题是你使用了
max,而不是range。 -
facepalm谢谢你们
-
也许你真正想要的是
max(x + s - K for x in range(n))?但是那为什么你有一个列表理解呢?
标签: python list-comprehension typeerror