gpt4 book ai didi

python - 从不同的列表项开始枚举

转载 作者:太空宇宙 更新时间:2023-11-04 10:27:06 25 4
gpt4 key购买 nike

我对 python 中的内置“枚举”函数有些熟悉。我知道如果我有这样的列表:

list = [A, B, C, D]

枚举将像这样编号:

list = [(A,0), (B,1), (C,2), (D,3)]

有没有办法从不同的列表项开始枚举?例如从 C 而不是 A 开始?

list = [(A,2),(B,3),(C,0),(D,1)]

或者,还有比使用枚举更好的方法吗?

我正在尝试编写程序,用户可以在其中选择歌曲的根音/调,程序将返回该音阶的和弦中的音符。例如,大和弦是音阶中的第一个三音和五音。所以在 C 的关键是 C-E-G。我认为最好的方法是枚举音乐键列表并打印第一个、第三个、第五个项目等。

最佳答案

如果索引超过可迭代对象的长度,开箱即用的枚举不会覆盖索引,即使您从偏移量开始也是如此。说通过一个简单的包装器扩展包装功能就足够简单了

for index, elem in ((index % len(lst), elem) for index, elem in enumerate(lst,2)):
print (index, elem)


(2, 'A')
(3, 'B')
(0, 'C')
(1, 'D')

如果您要多次使用,我们鼓励使用包装器

enumerate_wrap = lambda it, offset: ((index % len(it), elem)
for index, elem in enumerate(it, offset))
for index, elem in enumerate_wrap(lst, 2):
print (index, elem)


(2, 'A')
(3, 'B')
(0, 'C')
(1, 'D')

关于python - 从不同的列表项开始枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28771566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com