Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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
Python:将随机数放入列表中_Python_List_Random - Fatal编程技术网

Python:将随机数放入列表中

Python:将随机数放入列表中,python,list,random,Python,List,Random,创建一个名为my_randoms的“列表”,包含0到100之间的10个随机数 这就是我到目前为止所做的: import random my_randoms=[] for i in range (10): my_randoms.append(random.randrange(1, 101, 1)) print (my_randoms) 不幸的是,Python的输出是: [34] [34, 30] [34, 30, 75] [34, 30, 75, 27] [34, 30, 75,

创建一个名为my_randoms的“列表”,包含0到100之间的10个随机数

这就是我到目前为止所做的:

import random
my_randoms=[]
for i in range (10):
    my_randoms.append(random.randrange(1, 101, 1))
    print (my_randoms)
不幸的是,Python的输出是:

[34]
[34, 30]
[34, 30, 75]
[34, 30, 75, 27]
[34, 30, 75, 27, 8]
[34, 30, 75, 27, 8, 58]
[34, 30, 75, 27, 8, 58, 10]
[34, 30, 75, 27, 8, 58, 10, 1]
[34, 30, 75, 27, 8, 58, 10, 1, 59]
[34, 30, 75, 27, 8, 58, 10, 1, 59, 25]

它像我要求的那样生成10个数字,但它一次生成一个。我做错了什么?

修复
打印
语句的缩进

import random

my_randoms=[]
for i in range (10):
    my_randoms.append(random.randrange(1,101,1))

print (my_randoms)
您可以使用一次调用生成列表:

import random
my_randoms = random.sample(range(100), 10)
生成0到99之间(包括0到99)范围内的数字。如果你想要1到100,你可以使用这个(感谢@martineau指出我复杂的解决方案):


这里我使用
sample
方法生成10个介于0和100之间的随机数

注意:我使用的是Python3的
range
函数(不是
xrange

输出被放入列表中

[11, 72, 64, 65, 16, 94, 29, 79, 76, 27]

这已经很晚了,但万一有人觉得这很有帮助。

你可以使用列表理解

rand = [random.randint(0, 100) for x in range(1, 11)]
print(rand)
输出:

[974, 440, 305, 102, 822, 128, 205, 362, 948, 751]
干杯

xrange()
对3.x不起作用

numpy.random.randint().tolist()
对于指定间隔内的整数是一个很好的选择:

 #[In]:
import numpy as np
np.random.seed(123) #option for reproducibility
np.random.randint(low=0, high=100, size=10).tolist()

#[Out:]

[66, 92, 98, 17, 83, 57, 86, 97, 96, 47]
对于浮动,您还有
np.random.uniform()

#[In]:
np.random.uniform(low=0, high=100, size=10).tolist()

#[Out]:
[69.64691855978616,
28.613933495037948,
22.68514535642031,
55.13147690828912,
71.94689697855631,
42.3106460124461,
98.07641983846155,
68.48297385848633,
48.09319014843609,
39.211751819415056]

简单解决方案:

indices=[]
for i in range(0,10):
  n = random.randint(0,99)
  indices.append(n)

将打印放在for循环之后…而不是在其中。实际上,您一次生成一个数字,但您的原始代码要求您在每次生成一个数字时打印值。下面讨论print语句的解决方案只是在生成所有数字后等待并打印列表。每个程序都是一系列非常微小的步骤。现在,问题变成了“当我打印列表时,我希望完成哪些步骤?”。显然,您希望在打印之前将所有随机数添加到列表中。如果在打印之前删除缩进,它将在for循环的所有步骤重复执行后执行。缩进打印是构建列表时执行的步骤序列的一部分。
xrange
现在是
range
,python 3.x以后的版本。示例将不包括重复的值,这在本用例中可能很重要,也可能不重要,但值得注意的是,对于1..100范围内的值,使用
random.Sample(xrange(1,101),10)会更简单
而不是列表理解。对于python3
my_randoms=random.sample(范围(100),10)
我得到一个错误,没有定义“xrange”。我错过了任何库吗?@thanos.a
xrange
在Python3中已经不存在了,但是您可以使用
range
来代替:谢谢您的回答。按照要求,就他做错了什么做一个简短的解释就好了。对于其他初学者(未来的读者),也许可以扩展一下关于缩进错误的解释?这实际上是解决OP问题的唯一答案。其他的当然不错,但它们只是在语法、方法等方面改进/提供了替代方案。伙计们,OP的问题只是缩进!实际上,在0到99之间,不需要替换。
rand = [random.randint(0, 100) for x in range(1, 11)]
print(rand)
[974, 440, 305, 102, 822, 128, 205, 362, 948, 751]
 #[In]:
import numpy as np
np.random.seed(123) #option for reproducibility
np.random.randint(low=0, high=100, size=10).tolist()

#[Out:]

[66, 92, 98, 17, 83, 57, 86, 97, 96, 47]
#[In]:
np.random.uniform(low=0, high=100, size=10).tolist()

#[Out]:
[69.64691855978616,
28.613933495037948,
22.68514535642031,
55.13147690828912,
71.94689697855631,
42.3106460124461,
98.07641983846155,
68.48297385848633,
48.09319014843609,
39.211751819415056]
indices=[]
for i in range(0,10):
  n = random.randint(0,99)
  indices.append(n)