一次生成100个数字并将其作为列表并将其添加到空列表中

时间:2018-02-11 12:14:49

标签: python python-3.x

我需要从1-500生成100个数字并将其附加到空列表,但我不知道如何修复我的代码。有一个<'none'>在我打印它的最后。当我使用len函数来计算a时,它只会说1,所以它并没有真正添加100个数字。

a = []
import random
print("original: \n")
for x in range(100):
    nums = random.randint(1,501)
    b = print(nums, end=" ")

a.append(b)
print(a)
print(len(a))

5 个答案:

答案 0 :(得分:3)

我相信这就是你要找的东西。 print不会返回任何内容,您无法将print添加到列表中。事实上,为什么你需要2个变量就不清楚了。

import random

a = []

for x in range(100):
    a.append(random.randint(1,501))

print(' '.join(map(str, a)))

print(len(a))

避免循环的替代解决方案使用numpy库:

import numpy as np

a = np.random.randint(1, 501, 100)

如果表现有问题;例如对于许多大型随机列表;这里是基准测试与使用random的有效基于列表的解决方案:

import numpy as np
import random

%timeit np.random.randint(1, 501, 100)        # 5.97 µs
%timeit random.choices(range(1, 501), k=100)  # 66.3 µs

答案 1 :(得分:3)

在python-3.6上,您可以使用random.choices,并通过此函数的返回值扩展a

a.extend(random.choices(range(1, 501), k=100))

虽然,如果您从一个空列表开始并且在此步骤之前没有添加任何内容,那么将a初始化为

会更有意义。
a = random.choices(range(1, 501), k=100)

之前没有进行任何空列表初始化。

如果您使用的是旧版本的python,请在循环中使用random.randint

a.extend(random.randint(1, 500) for _ in range(100))  

或者,

a = [random.randint(1, 500) for _ in range(100)]

或者,

a = []
for _ in range(100):
    a.append(random.randint(1, 500))

从文档中,我认为上限是包容性的(因此,500)。

答案 2 :(得分:3)

nums = random.randint(1,501)

这会返回单个随机数,因此复数名称“nums”在这里会产生误导。

b = print(nums, end=" ")

print函数打印一些东西,在这种情况下是生成的数字,但它本身没有返回值。因此b将是None

a.append(b)

这可以理论上将生成的数字附加到列表中。但是,正如我们所建立的那样,bNone,因此会将None附加到列表中。此外,这一行在循环之外,所以这只会运行一次,并且只会添加100个数字中的一个。

你应该做这样的事情:

a = []
for x in range(100):
    num = random.randint(1,501)
    a.append(num)

print(a)
print(len(a))

您也可以在此处使用列表推导,以简化:

a = [random.randint(1, 501) for x in range(100)]
print(a)
print(len(a))

这将有相同的结果。

您还可以使用random.choices,它本身已经能够生成具有指定大小的随机数列表。所以这也可行:

a = random.choices(range(1, 501), k=100)

答案 3 :(得分:0)

你的代码是正确的只是一个小错误,你没有缩进a.append(nums),所以它超出了for循环的范围。试试这个代码:)。

import random

a = []
print("original: \n")

for x in range(100):
    nums = random.randint(1,501) 
    print(nums, end=" ") 
    a.append(nums) 

print(a) 
print(len(a))

答案 4 :(得分:0)

randint()函数只生成一个随机数。您可以在for循环中生成随机100次& simulatenosuly附加在列表中,因此当在for循环之外时,列表'a'具有100个随机数&这可以通过长度len()函数来验证。

此外,我附上输出的屏幕截图。

a = []
import random
print("original: \n")
for x in range(100):
  nums = random.randint(1,501)
  a.append(nums)

print("Numbers : " , a)
print("Length : " , len(a))

enter image description here