Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
random.choice在python中for循环内选择列表元素_Python_Loops - Fatal编程技术网

random.choice在python中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为空,则引发

这个代码怎么了?我希望列表中的单个元素使用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为空,则引发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)