我需要生成 0 到 500 之间的 100 个随机值,并将偶数存储在一个列表中,将奇数存储在另一个列表中。我被困在开始。
import random
def randomval():
size=random.randint(0, 500)
return
if val%2==0:
listeven.append()
else:
listodd.append()
我需要生成 0 到 500 之间的 100 个随机值,并将偶数存储在一个列表中,将奇数存储在另一个列表中。我被困在开始。
import random
def randomval():
size=random.randint(0, 500)
return
if val%2==0:
listeven.append()
else:
listodd.append()
both = [ random.randint(0, 500) for i in range(100) ]
odd = [ x for x in both if x % 2 == 1 ]
even = [ x for x in both if x % 2 == 0 ]
解决方案取决于随机数是否可以重复。
random_values = [ random.randint(0, 500) for i in range(100) ]
odd = [ x for x in random_values if x % 2 ]
even = [ x for x in random_values if not x % 2 ]
如果您想获得唯一的随机数,我建议您使用 shuffle
random_values = random.sample(range(0, 500), 100)
odd = [ x for x in random_values if x % 2 ]
even = [ x for x in random_values if not x % 2 ]
例如,您可以使用生成器减少内存使用量
random_values = (random.randint(0, 500) for i in xrange(100))
odd = []
even = []
for val in random_values:
if val % 2:
odd.append(val)
else:
even.append(val)
一次性完成所有操作 - 效率更高。
from random import randint
even, odd = [], []
for _ in range(100):
num = randint(0, 500)
if num % 2:
odd.append(num)
else:
even.append(num)
作为一个函数:
def get_random_even_and_odd(amount=100, _min=0, _max=500):
even, odd = [], []
for _ in range(amount):
num = randint(_min, _max)
if num % 2:
odd.append(num)
else:
even.append(num)
return even, odd