【发布时间】:2017-09-07 21:27:10
【问题描述】:
我想创建一个按此顺序从列表中打印数字的函数:
-可被 0 和 1 整除的数字
-可被素数整除的数(所有数都可被 2 整除,然后数可被 3 整除,等等)
我的代码前面有两个函数。基本的“max”函数和“prime_numbers”函数,打印素数直到给定的数字,例如素数(50)。两者都工作正常。
这是我遇到问题的功能部分:
if max(x) >= 2:
divisors = prime_numbers(maks(x))
for i in divisors:
sel = [x % i == 0 for x in i]
result.append([i for i in sequence if sequence in sel])
sequence = [i for i in sequence if i not in sequence]
For 循环是一团糟。我想做的是我在 R 中编写相同函数时所做的事情。
sel <- !as.logical(sequence %% i)
result <- c(result,sequence[sel])
sequence <- sequence[!sel]
'Sequence' 已在代码中声明,它包含列表中大于或等于 2 的数字。 'Result' 也被声明,它包含小于 2 的数字。
我想迭代除数(prime_numbers)并且:
- “sel”包含逻辑答案,该数字是否可被给定除数整除
- 我想将可整除的“序列”中的数字(sel 中的 TRUE 值)附加到先前的“结果”变量中。
- 我想从“序列”中删除可整除且已附加到“结果”的数字,以便可以迭代另一个除数。
我对 R 比对 Python 更熟悉,而且在那里更容易。我试图用列表推导做一些事情,但我不理解它。
【问题讨论】:
-
"能被 0 和 1 整除的数字"...祝你好运。
-
是的,您应该意识到 0 将是未定义的,而 1... 那么什么数字不能被 1 整除!?
-
对不起,我只想写简单的 '0 和 1'。它对代码没有影响,因为无论如何我都没有迭代 0。
-
这真的不清楚(我必须承认,将两个 cmets 传递到那里,让我发笑)。而且还不清楚你想要什么?像
values['divisor'] = ['a_number', 'another_number'...]这样的字典会更容易吗?还有[i for i in sequence if i not in sequence],我很确定它总是空的:)。 -
应该首先更清楚地澄清一些变量。您是否希望输出成为初始起始列表的子列表?因此,假设您有一个名为“x”的数字列表,您是否希望该函数首先打印 x 中可被 0 整除的所有数字的列表(当然,这将始终返回一个空列表!),然后是x 中可被 1 整除的所有数字的列表(这将返回与 x 相同的列表),然后是 x 中可被 2 整除的所有数字的列表,然后是 3,然后是 5 等等。这就是你正在寻找的为了?
标签: python