我正在用Python2.7编写一个程序来寻找MusicXML乐谱中的某些特性。目前我正在编写查找和弦(基本上是同时弹奏的音符)所需的函数。乐谱将有不同的部分,其中音乐是写的(如低音,小提琴,女高音等),在我的程序中,每一个部分都有一个列表,这个列表包含了所有这些部分的音符及其作为字符串的时间间隔。在
这些列表存储在字典中,其中的键是它们所属部分的名称,它们本身并不是作为变量存储的,因为我不知道分数将有多少个部分。使用字典可以动态地创建键名。e、 g
scoreDict = {Bass : [A#3 1, B3 3, C4 5, ... X n], Soprano : [C#5 1, F#4 2, C#2 3, ... X n]}
在上面的例子中,音符A#3和C#5出现在同一时间间隔(1)。在
为了找到和弦,我需要遍历字典中的每个列表,找到音符的时间间隔匹配的地方,并返回这些音符的名称,以给用户弹奏的和弦。在
然而,问题是这些列表的数量是不确定的(当我动态地填充包含它们的字典时,可能会有任意数量的列表),所以我不能简单地通过写以下内容来遍历它们:
^{pr2}$迭代未确定数量的列表的最佳方法是什么?我确实考虑过为每个列表创建一个字典,其中key是note位置,value是note,但是问题是时间间隔可能在列表中重复,从而导致重复的键。在
我想您的示例中缺少一个
zip
可以将“splat”运算符与
^{pr2}$zip
一起使用相关问题 更多 >
编程相关推荐