【问题标题】:deconstructing word solution解构词解
【发布时间】:2013-11-18 02:58:31
【问题描述】:

我想解决一个单词问题,但在关键部分卡住了。

将 n 初始化为 100。将 numbers 初始化为从 2 到 n 的数字列表,但不包括 n。 结果以空列表开头,只要 numbers 包含任何数字,就重复以下操作。

  • 将 numbers 中的第一个数字添加到结果的末尾。

  • 删除 numbers 中可以被您刚刚添加到结果中的数字整除(除以时没有余数)的每个数字。

多久出结果?

当n为100时,结果的长度为25。

到目前为止,我已经理解设置 n = 100 和 range(2, 100),results = [] 并且结果将是一个追加情况,如 results.append(numbers[]), 但我有一个心理障碍,无法确定删除数字中的每个数字的关键,这些数字可以被添加到结果中的数字整除。

我知道这将是一个从一个列表到另一个列表并通过 while 循环工作的底数或模数解决方案。我还可以计算长度将是 len(结果)。任何帮助或指导将不胜感激。

【问题讨论】:

  • @sashkello 我可能有点为时过早,是的。

标签: python list while-loop


【解决方案1】:

如果您的新号码是newnumber,那么您只能从列表中选择不能被它整除的元素:

results = [x for x in results if x%newnumber!=0]
results.append(newnumber)

这里newnumber是事后添加的,因为这样做更合理(否则它本身会被过滤掉)。

如果你坚持按那个顺序做,那就有点丑了:

results.append(newnumber)
results = [results[i] for i in range(0,len(results)-1) if results[i]%newnumber!=0]

【讨论】:

  • 我一定很笨,但是你能用我在原始问题中使用的术语来表达吗? n 和结果和数字。我也意识到这是以倒退的方式获得质数。谢谢。
  • @EricBaltrush 抱歉,最初的问题是询问如何从列表中删除某些数字。这回答了它,如果我只是为您编写整个代码,我认为它对您自己的教育目的没有用。剩下要做的就是初始化列表并编写循环,您可以在其中复制粘贴上面的两行(newnumber 将是 numbers 列表中的最后一个数字)。如果您有特定的卡住点,请在单独的问题中提出。
  • 非常感谢重写。我会继续努力,看看我能想出什么。这是获得素数的一种疯狂方式,我意识到这就是结果。
  • @EricBaltrush 欢迎。是的,这是一个素数,当然远非任何有效的方法。但是,关键是要学习编码,这是学习一些列表推导的好方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-24
  • 2022-12-31
  • 2019-05-21
  • 2017-11-15
  • 1970-01-01
相关资源
最近更新 更多