【问题标题】:List comprehension - TypeError: 'int' object is not iterable列表理解-TypeError:'int'对象不可迭代
【发布时间】: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


【解决方案1】:

根据我认为这是您正在寻找的代码:

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 2023-01-22
    • 2021-06-06
    • 2018-09-29
    • 2020-02-26
    • 2015-04-06
    相关资源
    最近更新 更多