这里有一个和弦列表:
chordList = ["N","C:maj","C:min","C#:maj","C#:min","D:maj","D:min","D#:maj","D#:min","E:maj","E:min","F:maj","F:min","F#:maj","F#:min","G:maj","G:min","G#:maj","G#min","A:maj","A:min","A#:maj", "A#:min", "B:maj","B:min"]
然后例如,有一些字符串,例如“ F:maj”,“ F:maj / 3”,“ C:maj / 4”,“ D:min7”等。我知道我可以使用chordList中的if字符串来检查是否列表中那些普通的和弦。但是,我想将“ F:maj / 3”,“ C:maj / 4”之类的字符串与列表中的字符串进行比较,无论它们是否具有共同的“ x:maj”或“ x:min”部分,然后返回TRUE或FALSE值
最佳答案
我建议将您的chordList
转换为set
以获得平均O(1)
查找时间。
选项1split
上的/
:
sample = 'C:maj/7'
sample.split('/')[0] in chordList
# True
选项2(如果我在弹钢琴的日子里没记错的话,这将一直有效,尽管如果和弦的存在超过9分之一,它将失败)
slice
sample = 'C:maj/7'
sample[:-2] in chordList
# True