Python:字符串补偿

2024-04-24 03:24:52 发布

您现在位置:Python中文网/ 问答频道 /正文

这里我有一个合唱团:

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值


Tags: 字符串falsetrue列表ifminmaj合唱团
2条回答

似乎可以按前缀匹配字符串:

s="F:maj/3"
if any(s.startswith(x) or x.startswith(s) for x in chordList):
    # yes, it is contained

我建议将您的chordList转换为set,平均查找时间为O(1)。在

选项1
split/上:

sample = 'C:maj/7'
sample.split('/')[0] in chordList
# True

选项2(如果我在弹钢琴的时候记错了,这个方法总是有效的,尽管如果和弦存在于9分以上,这将失败)
slice

^{pr2}$

相关问题 更多 >