Python:将随机数放入列表中
创建一个名为my_randoms的“列表”,包含0到100之间的10个随机数 这就是我到目前为止所做的: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,
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)会更简单
而不是列表理解。对于python3my_randoms=random.sample(范围(100),10)
我得到一个错误,没有定义“xrange”。我错过了任何库吗?@thanos.axrange
在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)