基于间隔列表跳过数组项



所以我正试图用python为我的女朋友编写一个程序,以自动获取给定音阶的所有音符。

我想做一个笔记列表:

notes =  ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B']

按以下间隔跳过它们的索引:

intervals = [2, 1, 2, 2, 1, 2, 2]

提前感谢!

我试着手动做,但我真的想自动化所有的过程。

可以使用模运算类似江户Akse写的-

notes =  ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B']
intervals = [2, 1, 2, 2, 1, 2, 2]
idx = 3
for interval in intervals:
print(notes[idx])
idx += interval
idx %= len(notes)

结果

D#
F
F#
G#
A#
B
C#

为注释使用索引,从需要的地方开始,并在循环中将每个间隔添加到索引中。如果已经过了列表的末尾,则减去列表的长度以循环注释列表。

notes =  ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B']
intervals = [2, 1, 2, 2, 1, 2, 2]
idx = 3

for interval in intervals:
print(notes[idx])
idx += interval
if idx > len(notes):
idx -= len(notes)

输出
D#
F
F#
G#
A#
B
C#

最新更新