0

我需要生成 0 到 500 之间的 100 个随机值,并将偶数存储在一个列表中,将奇数存储在另一个列表中。我被困在开始。

import random

def randomval():

   size=random.randint(0, 500)
   return 
   if val%2==0:
       listeven.append()
   else:
       listodd.append()
4

3 回答 3

4
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 ]
于 2013-10-29T11:32:57.643 回答
2

解决方案取决于随机数是否可以重复。

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)
于 2013-10-29T11:45:14.500 回答
2

一次性完成所有操作 - 效率更高。

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
于 2013-10-29T11:39:01.057 回答