如果可能的话,我想找到一种方法来查看所有可能的剩余部分。
作为一个例子,而不是 34%5 只产生 4 我想实现一个方法来产生所有可能的余数列表 [29, 24, 19, 14, 9,4]
这可能吗?
如果可能的话,我想找到一种方法来查看所有可能的剩余部分。
作为一个例子,而不是 34%5 只产生 4 我想实现一个方法来产生所有可能的余数列表 [29, 24, 19, 14, 9,4]
这可能吗?
您可以使用该range
功能。
>>> print(list(range(34, 0, -5)))
[34, 29, 24, 19, 14, 9, 4]
(虽然只有 4 是余数。只有一个真正的余数。)
数学 101 遇到了一个生成器:
def all_remainders(num, denom):
value = num
yield value # we want the original number
while value >= denom:
value -= denom
yield value
它有效吗?
>>> list(all_remainders(34, 5))
[34, 29, 24, 19, 14, 9, 4]
>>> list(all_remainders(34, 17))
[34, 17, 0]
>>> _
我希望你明白其中的逻辑。
range
@dietrich-epp的基于 - 的解决方案也是如此,只是使用了一个标准函数。
我不确定您所说的重复功能应用到底是什么意思;这是我的猜测。如果您想将相同的功能应用于其自己的输出,您可以执行以下操作:
result = []
for remainder in all_remainders(34, 5):
for nested_remainder in all_remainders(remainder, 3):
result.append(nested_remainder)
print result
但这会打印出很多重复的数字。您可以使用 a set
,甚至将整个内容写在一个语句中(称为“生成器理解”):
result = set(nested_remainder
for remainder in all_remainders(34, 5)
for nested_remainder in all_remainders(remainder, 7)
)
print result
太糟糕了,结果不会很有趣。
如果您解释了您要解决的问题,我们可能会提供更好的解决方案。