【问题标题】:How to use to find the placement of a object in a list如何使用在列表中查找对象的位置
【发布时间】:2021-12-21 14:09:38
【问题描述】:

我目前的问题是我想搜索列表中的项目,但只搜索所述列表中的项目数

drumsound = ["0"]
def AddSnare():
  drumsound.append("1")
  print(drumsound)
  
def AddTom():
  drumsound.append("2")
  print(drumsound)

def beat(): 
  a = 1
  for x in drumsound:
   if drumsound[a] == "1":
    mixer.music.load("soundfiles/snare.mp3")
    mixer.music.set_volume(1)
    mixer.music.play()
    a += 1
   
   elif drumsound[a] == "2":
     mixer.music.load("soundfiles/tom.mp3")
     mixer.music.set_volume(1)
     mixer.music.play()
     a += 1

我的问题是,如果在这一行 if drumsound[a] == "1": 我可以使用 [a] 作为变量或者我可以做一些更简单的事情的方式

【问题讨论】:

  • 首先,drumsound[a] 在这里是多余的。 x 已经是 drumsound[a] 所以 x == "1" 就足够了。
  • 如果我理解您的问题,只需测试 x 代替 drumsound[a]

标签: python list indexing


【解决方案1】:

您可以通过函数对象的list 来简化此操作,而不是让某个幻数("1""2")与声音相关联。

在 python 中,函数是第一类对象,因此您可以传递它们、将它们分配给变量、将它们附加到 lists 等等。在您使用括号 () 之前,它们实际上不会做任何事情打电话给他们。

这允许你做这样的事情:

def play_snare(mixer):
    mixer.music.load("soundfiles/snare.mp3")
    mixer.music.set_volume(1)
    mixer.music.play()
  
def play_tom(mixer):
    mixer.music.load("soundfiles/tom.mp3")
    mixer.music.set_volume(1)
    mixer.music.play()

def beat(drumsounds, mixer):
    # here func will be play_snare, play_tom, and play_snare
    # because of the list defined below
    for func in drumsounds:
        func(mixer)

drumsounds = []
drumsounds.append(play_snare)
drumsounds.append(play_tom)
drumsounds.append(play_snare)
beat(drumsounds, mixer)

当您迭代 list 时,python 会帮您一个忙,并在您迭代时解压缩 list

所以:

a = 0
for x in drumsound:
    print(drumsound[a])
    a += 1

正在做与这完全相同的事情:

for x in drumsound:
    print(x)

【讨论】:

    猜你喜欢
    • 2020-01-25
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    相关资源
    最近更新 更多