将函数应用于列表中的每个项目

2024-07-05 12:58:28 发布

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

我有以下pygame代码,但它通常适用于python

expl_sounds = []
for snd in ['expl3.wav', 'expl6.wav']:
    expl_sounds.append(pygame.mixer.Sound(path.join(snd_dir, snd)))

我想单独禁用列表中的所有项,而不是禁用整个应用程序或混合器。我尝试了以下方法:

 for i in expl_sounds:
     expl_sounds[i].set_volume(Sound_Volume)

TypeError: list indices must be integers or slices, not Sound

我没有收到错误信息。循环中的i是一个整数,mixer.set_Volume是元素的有效操作

迭代并将卷应用于每个元素的正确方法是什么


Tags: 方法代码in元素forpygamewavset
3条回答

您的错误源于对语法for i in expl_sounds的误解循环中的i是一个整数不是真的,iexpl_sounds的一个元素,是您刚才添加的pygame.mixer.Sound实例的一个元素


所以直接使用对象

for sound in expl_sounds:
    sound.set_volume(Sound_Volume)

要按索引进行,请执行以下操作:

for i in range(len(expl_sounds)):
    expl_sounds[i].set_volume(Sound_Volume)

当您编写for i in expl_sounds:时,您正在迭代expl_sounds中的元素,因此您只需执行以下操作:

for i in expl_sounds:
     i.set_volume(Sound_Volume)

“expl_sounds”中的“i”是声音对象本身,而不是数组索引

请尝试以下操作:

for i in expl_sounds:
     i.set_volume(Sound_Volume)

相关问题 更多 >