如何基于changes列表遍历C大调音阶midi值列表C得到目标输出序列
实现方法
你当前的代码遍历对象是C列表,所以只能输出C的所有元素。你的需求实际是把changes列表的每个元素作为索引,去读取C列表对应位置的midi值,修改逻辑如下:
示例代码
C = [60, 62, 64, 65, 67, 69, 71] changes = [0, 6, 2, 4, 4, 4, 3, 2] # 按changes的索引值提取C的对应元素 result = [C[i] for i in changes] # 格式化输出为要求的逗号分隔格式,末尾加句号 print(', '.join(map(str, result)) + '.')
说明
上述逻辑对changes的长度没有限制,哪怕你实际场景有64个数值也可以正常运行,只需要保证changes里的所有数值都不超过C列表的最大索引(当前C的最大索引为6),就不会出现索引越界错误。
如果你运行代码得到的结果和你给出的期望输出不一致,是你问题里贴的changes示例存在笔误,调整changes的实际数值即可。
内容的提问来源于stack exchange,提问作者terrence mckenna
相关产品推荐
相关产品推荐

