为了账号安全,请及时绑定邮箱和手机立即绑定

此列表中的数字之一是否位于两个给定整数之间?

此列表中的数字之一是否位于两个给定整数之间?

Helenr 2023-12-09 16:18:33
我有一个包含小节线刻度线和可以与小节线重叠的 MIDI 音符的列表。所以我列出了“barlineticks”列表:barlinepos = [0, 768.0, 1536.0, 2304.0, 3072.0, 3840.0, 4608.0, 5376.0, 6144.0, 6912.0, 0, 576.0, 1152.0, 1728.0, 2304.0, 2880.0, 3456.0, 4032.0, 4608.0, 5184.0, 5760.0, 6336.0, 6912.0, 7488.0]和一个 MidiFile:{'type': 'time_signature', 'numerator': 4, 'denominator': 4, 'time': 0, 'duration': 768, 'ID': 0}{'type': 'set_tempo', 'tempo': 500000, 'time': 0, 'ID': 1}{'type': 'track_name', 'name': 'Tempo Track', 'time': 0, 'ID': 2}{'type': 'track_name', 'name': 'New Instrument', 'time': 0, 'ID': 3}{'type': 'note_on', 'time': 0, 'channel': 0, 'note': 48, 'velocity': 100, 'ID': 4, 'duration': 956}{'type': 'time_signature', 'numerator': 3, 'denominator': 4, 'time': 768, 'duration': 6911, 'ID': 5}{'type': 'note_on', 'time': 768, 'channel': 0, 'note': 46, 'velocity': 100, 'ID': 6, 'duration': 575}{'type': 'note_off', 'time': 956, 'channel': 0, 'note': 48, 'velocity': 0, 'ID': 7}{'type': 'note_off', 'time': 1343, 'channel': 0, 'note': 46, 'velocity': 0, 'ID': 8}{'type': 'end_of_track', 'time': 7679, 'ID': 9}我想检查 MIDI 音符是否与小节线重叠。每条 note_on 消息都有一个“时间”和“持续时间”值。我必须检查其中一个小节线(列表中)是否在注释(“时间”和“持续时间”)的范围内。我试过:if barlinepos in range(0, 956):    print(True)当然这不起作用,因为 barlinepos 是一个列表。如何检查列表中的某个值是否结果为 True?
查看完整描述

1 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

简单迭代即可解决需求:


for i in midifile:

    start, end = i["time"], i["time"]+i["duration"]

    for j in barlinepos:

        if j >= start and j<= end:

            print(True)

            break

    print(False)


查看完整回答
反对 回复 2023-12-09
  • 1 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信