2016-10-04 2927 views

回答

4
winner.append(list.pop(random.randrange(0,len(list)))) 

要打破下来:

random.randrange(0,len(list)) 

会产生零之间,然后将列表包容的长度的随机数。这将在您的列表中生成一个随机索引,您可以参考。

list.pop(i) 

这会从列表中删除指定索引(i)处的项目。

winner.append(x) 

这会将项目(x)添加到获胜者列表的末尾。如果你想添加项目在一个特定的索引,您可以使用

winner.insert(i,x) 

与我是索引插入在和x是插入的值。

如果您想了解更多信息,一个很好的参考,对数据结构的Python文档: https://docs.python.org/2/tutorial/datastructures.html

+0

'list.pop'从末尾开始,而不是一个特定的索引 –

+0

@ cricket_007检出我引用的python文档,如果未指定索引,则返回最后一个元素,否则返回指定索引处的元素 – PrestonM

+1

I只是指出你没有在你的回答中提供参数 –

0

这将从名称列表names中选择一个随机项目,并将其添加到另一个列表winner。然后从names中删除所选的获胜者。

import random 
winner = [] 
names = ['john','james','michael','david','william'] 
winnerindex = random.randint(0,len(names)-1) 
winner.append(names[winnerindex]) 
del names[winnerindex] 
print winner, names 
+0

问题到底是什么,你想要我详细说明一下吗? @J F – ImportanceOfBeingErnest

+0

是的,所以这段精彩的代码非常复杂,并且使用了很多鲜为人知的概念,因此只有少数用户能够理解它,而无需页面冗长的文档。 – ImportanceOfBeingErnest

-1

只需使用random.randint从指数0到LEN(列表)来获取列表元素的索引,并将其追加到赢家。

import random 
index = random.randomint(0, len(list)-1) 
winner.append(list[index]) 
del list[index] 
+0

这可能会导致重复添加 –

+0

这并不会从原始列表中删除该号码。 – PrestonM

+0

@ cricket_007他从未提及过重复。 – Scriptodude