【发布时间】:2016-08-03 07:33:12
【问题描述】:
我正在编写一个程序来生成随机的 12 音阶(音乐理论)并将它们存储在一个列表中 numbers[]
我有一个名为invert() 的函数,它获取每个值之间的差异,然后对前一个数字进行运算以反转列表中的间隔。
例如,(1,5,4,7,8,3) 反转将是 (1,9,10,7,6,11)
def invert():
diff = [b - a for (a, b) in zip(numbers[:-1], numbers[1:])]
for a in range(11):
if numbers[a] - diff[a] > 11:
numbers[a+1] = numbers[a] - diff[a] - 12
elif numbers[a] - diff[a] < -11:
numbers[a+1] = numbers[a] - diff[a] + 12
else:
numbers[a+1] = numbers[a] - diff[a]
return numbers
我的问题是如何使用模来删除这些 if 语句的使用。 有没有办法使用 mod 来环绕数字,所以如果差值为 -15,它会被重估为 -3?
【问题讨论】: