random.choice在python中for循环内选择列表元素
这个代码怎么了?我希望列表中的单个元素使用for循环随机选择 期望输出:random.choice在python中for循环内选择列表元素,python,loops,Python,Loops,这个代码怎么了?我希望列表中的单个元素使用for循环随机选择 期望输出: num=[1,2,3,4,5,6] for c in num: print("selected :",random.choice(c)) TypeError: object of type 'int' has no len() 或 我正在循环列表,因为如果选择了1个元素,我希望将其从列表中删除。从文档中,它接受一个序列 random.choiceseq 从非空序列seq返回一个随机元素。 如果seq为空,则引发
num=[1,2,3,4,5,6]
for c in num:
print("selected :",random.choice(c))
TypeError: object of type 'int' has no len()
或
我正在循环列表,因为如果选择了1个元素,我希望将其从列表中删除。从文档中,它接受一个序列
random.choiceseq
从非空序列seq返回一个随机元素。
如果seq为空,则引发indexer
因此,传入num的每个元素是错误的,它是一个int,这将导致TypeError:
文件/../python3.8/random.py,第288行,在选项中
i=自我
TypeError:类型为“int”的对象没有len
您需要传入num本身,然后它从中返回一个随机元素
selected :6
for循环在这里没有多大意义,因此注释中会出现问题,因为您不需要将每个元素传递给random.choice
你说:
我正在循环列表,因为如果选择了1个元素,我希望它在列表中被删除
我不确定您的实际目的是什么,但也许一个while循环更合适。例如,当列表不为空时,可以继续从列表中选择随机元素并将其从列表中删除
>>>num=[1,2,3,4,5,6]
>>>当lennum>0时:
... n=随机选择
... 打印选定项:,n
... 雷蒙数
... printnum现在为:,num
...
选定:3
num现在是:[1,2,4,5,6]
入选人数:5
num现在是:[1,2,4,6]
选定:4
num现在是:[1,2,6]
选定:1
num现在是:[2,6]
入选人数:6人
num现在是:[2]
选定:2
num现在是:[]
另一种解决方案是使用random.shufflenum,然后在num上循环,这意味着每个项都将显示一次
>>> num = [1,2,3,4,5,6]
>>> print("selected :", random.choice(num))
selected : 4
>>> print("selected :", random.choice(num))
selected : 5
>>> print("selected :", random.choice(num))
selected : 2
你为什么在名单上绕来绕去?为什么要对每个元素调用random.choice?我正在循环列表,因为如果选择1个元素,我计划在列表中删除该元素。因此,如果你循环,你认为你删除了该元素?选择任何元素中的1个是我唯一的问题,因为如果我选择printc或printnum,它会在列表中给我6个元素
>>> num = [1,2,3,4,5,6]
>>> print("selected :", random.choice(num))
selected : 4
>>> print("selected :", random.choice(num))
selected : 5
>>> print("selected :", random.choice(num))
selected : 2
num = [1, 2, 3, 4, 5, 6]
random.shuffle(num)
for c in num:
print("selected: ", c)