我试图为模数11编写代码,但未能使其更像python。在
到现在为止,我使用一个权重并增加它,当它达到一个数字时进行检查,然后将它设置为它的原始值。在
假设我有一个数字列表
1..20
我想用2,3,4,5,6,7,8,9,2,3,4,etc
乘以它们,这样每个索引都会被乘以一个递增的数字。在
1x2、2x3、3x4、4x5、5x6、6x7、7x8、8x9、9x2、10x3等。。在
有什么优雅的方法吗?在
不正当的方式:
def mod11(list, max_weight=9):
sum = 0
weight = 2
for item in reversed(list):
sum += item * weight
weight += 1
if weight > max_weight:
weight = 2
mod = 11 - sum % 11
if mod > 9:
return 0
else:
return mod
可以使用当前索引确定乘数:
或者,您可以"cycle"乘法器序列并压缩输入序列:
^{pr2}$这里已经有很多好的答案了,如果你想用
numpy
(通常对这类事情很好),这里有一个替代方法:好吧,我不太确定我是否能正确地理解你的问题,因为你说的是模数11,但似乎也使用了从2到9的数字。在
但我们先把1..20列为一个列表,可能如下:
接下来,要将某个整数转换为2到9之间的数字,可以执行以下操作:
^{pr2}$将这两者结合起来,你可以做出一个列表理解:
(添加-1是为了使第一个数字从2开始而不是从3开始)
相关问题 更多 >
编程相关推荐