【问题标题】:TypeError: cannot unpack non-iterable int object when trying to use list comprehensionTypeError:尝试使用列表推导时无法解压不可迭代的 int 对象
【发布时间】:2018-10-29 16:04:59
【问题描述】:

我相信这意味着我不能在循环中使用变量,但我有点卡在它上面。

我要解决的问题是:

创建一个算法,找到满足以下条件的小于 n 的素数对:(p * q)

我考虑过使用列表推导。

到目前为止我的代码:

n = 100

primes = [p for p in range(2, n) if 0 not in [p%d for d in range(2, p)]]

prime_pairs = [((p * q) <= n) for (p, q) in primes]

【问题讨论】:

  • 你快到了: prime_pairs = [(p , q) for p in primes for q in primes if p*q

标签: python


【解决方案1】:
prime_pairs = [((p * q) <= n) for (p, q) in primes]

是罪魁祸首。 primes 是整数列表,因此您不能将单个 int 解压缩到元组中。

正如@matina-g 建议的那样:

prime_pairs = [(p, q) for p in primes for q in primes if p * q <= n]

【讨论】:

  • 谢谢,这让我的代码完美运行。我知道这种方法效率低下,但是我发现不同的筛子有点太平庸了,更多的是为了证明你可以用列表理解来做到这一点。 :)
猜你喜欢
  • 2021-06-06
  • 1970-01-01
  • 2020-07-12
  • 2020-01-28
  • 2019-04-22
  • 2022-01-20
  • 2020-04-08
  • 2021-05-25
  • 2020-07-21
相关资源
最近更新 更多