尝试将某些内容用于我在数组中随机选择4个对象并随机选择其中一个。我需要能够获得所选对象的原始索引号。关于如何写这个尽可能短的任何想法?
arrayRandomSongs = []
arrayChosen = []
trackChosen = ""
def randomizeArray(self):
del self.arrayRandomSongs[:] # wipes array of all contents without making a new one
self.arrayRandomSongs = self.arraySongs[:]
random.shuffle(self.arrayRandomSongs)
def chooseListing(self):
del self.arrayChosen[:] # same here
for i in xrange(4):
self.arrayChosen.append(self.arrayRandomSongs[i])
del self.arrayRandomSongs[0:3]
def chooseTrack(self):
self.trackChosen = random.choice(self.arrayChosen)
正如您所看到的,我想为trackChosen对象选择arayChosen索引号,但由于它是随机的,我不知道如何做到这一点。
答案 0 :(得分:2)
您必须在随机化之前跟踪索引。然后在随机化并从随机列表中选择一个元素后,从跟踪列表中访问索引值。
要获取列表中元素的索引,您可以执行<list>.index(<element>)
。
<强>解释强>
在对其元素进行混洗之前创建arrayRandomSongs
的副本。
original_arrayRandomSongs = arrayRandomSongs[:]
通过执行trackChosen
获取random.choice
的值后,使用该值通过执行
original_arrayRandomSongs.index(self.trackChosen)
答案 1 :(得分:1)
你可以做这样的事情
list = [4,1,3,2]
list_with_indices = [(num,i) for i, num in enumerate(list)]
shuffle(list_with_indices)
基本上你跟踪原始索引。