如何让Python显示所有可能的余数,而不是仅显示数字倍数最大的余数?

如何让Python显示所有可能的余数,而不是仅显示数字倍数最大的余数?,python,Python,如果可能的话,我想找到一种方法,将所有可能的余项都列为一个列表 作为一个例子,我想实现一个方法,生成一个包含所有可能余数的列表[29,24,19,14,9,4],而不是34%5只生成4 这可能吗?您可以使用范围功能 >>> print(list(range(34, 0, -5))) [34, 29, 24, 19, 14, 9, 4] (虽然只有4个是余数。只有一个真正的余数。)您可以使用范围功能 >>> print(list(range(34, 0, -5

如果可能的话,我想找到一种方法,将所有可能的余项都列为一个列表

作为一个例子,我想实现一个方法,生成一个包含所有可能余数的列表[29,24,19,14,9,4],而不是34%5只生成4


这可能吗?

您可以使用
范围功能

>>> print(list(range(34, 0, -5)))
[34, 29, 24, 19, 14, 9, 4]

(虽然只有4个是余数。只有一个真正的余数。)

您可以使用
范围
功能

>>> 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]
>>> _
我希望你能理解其中的逻辑

@dietrich epp基于
范围的解决方案也是如此,只是使用了一个标准函数

>>> print(list(range(34, 0, -5)))
[34, 29, 24, 19, 14, 9, 4]
我不知道你说的重复函数应用到底是什么意思;这是我的猜测。如果要将同一函数应用于其自身的输出,可以执行以下操作:

result = []
for remainder in all_remainders(34, 5):
  for nested_remainder in all_remainders(remainder, 3):
    result.append(nested_remainder)

print result
但这会打印出很多重复的数字。您可以使用
集合
,甚至可以在一条语句中编写整个内容(称为“生成器理解”):

太糟糕了,结果不会很有趣


如果你解释了你正在解决的问题,我们可能会有更好的解决方案。

数学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]
>>> _
我希望你能理解其中的逻辑

@dietrich epp基于
范围的解决方案也是如此,只是使用了一个标准函数

>>> print(list(range(34, 0, -5)))
[34, 29, 24, 19, 14, 9, 4]
我不知道你说的重复函数应用到底是什么意思;这是我的猜测。如果要将同一函数应用于其自身的输出,可以执行以下操作:

result = []
for remainder in all_remainders(34, 5):
  for nested_remainder in all_remainders(remainder, 3):
    result.append(nested_remainder)

print result
但这会打印出很多重复的数字。您可以使用
集合
,甚至可以在一条语句中编写整个内容(称为“生成器理解”):

太糟糕了,结果不会很有趣


如果你解释了你正在解决的问题,我们可能会找到更好的解决方案。

我想说的是n/j*k的所有可能的剩余部分,例如[24%(5*1),24%(5*2),…等等]事实上,我看了一秒钟,你的回答非常有用time@J.F.Sebastian:如果要包含0,为什么要到此为止?为什么不包括负数?@J.F.Sebastian:为什么不包括-17?我想说的是n/J*k的所有可能的余数,例如[24%(5*1),24%(5*2),…等等]事实上,我看了第二眼,你的回答很有帮助time@J.F.Sebastian:如果要包含0,为什么要到此为止?为什么不包括负数?@J.F.Sebastian:为什么不是-17?是的,这是我想要的,现在我能回忆起那个函数和它在另一个除数上的列表吗?嗯,这个例子显示了两个不同除数的用法,即
5
17
。正如您可能已经猜到的,
num
是分子,
denom
是分母,也就是除数。嗯,我希望列表中有原始数字,基本上在其自身上运行函数,用“余数”列表和原始数字替换num。请原谅我缺乏专业术语。嗯,你说的对,我似乎更想寻找一种方法,我可以创建一个后续减法结果及其结果的列表。是的,这是我所寻找的,现在我可以在另一个除数上回忆起该函数及其列表吗?嗯,该示例显示了两个不同除数的使用,即
5
17
。正如您可能已经猜到的,
num
是分子,
denom
是分母,也就是除数。嗯,我希望列表中有原始数字,基本上在其自身上运行函数,用“余数”列表和原始数字替换num。请原谅我缺乏专业术语。嗯,你说的对,我似乎更想寻找一种方法,我可以创建一个后续减法结果及其结果的列表