from random import *
day = list(range(1, 29))
day = day[3:29]
shuffleday = shuffle(day)
print(shuffleday)
结果是None
。怎么了?
random.shuffle不返回任何内容。它修改输入列表。
import random
day=list(range(1,29))
print(day)
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]
day=day[3:29]
print(day)
# [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]
shuffleday=random.shuffle(day)
print(shuffleday)
# None
print(day)
# [27, 9, 14, 15, 7, 17, 28, 10, 23, 21, 16, 12, 6, 11, 22, 25, 24, 20, 5, 19, 13, 4, 18, 8, 26]
random.shuffle
修改day
。它不会返回任何内容。
这是Python中的惯例,其中修改给定参数的函数返回None
。
如果您希望生成一个新的列表shuffled,而不修改原始列表,您可能希望使用random.sample
。
from random import *
day = list(range(1, 29))
shuffleday = sample(day[3:29], len(day2))
print(shuffleday)
如果您只是想从列表中获得一个随机元素,则可以使用random.choice
。
from random import *
day = list(range(1, 29))
randomday = choice(day[3:29])
print(randomday)
要从日期列表中获取随机数,请使用choice
而不是shuffle
,它将从day[3:29]
:返回随机元素的值
from random import *
day = list(range(1, 29))
day = day[3:29]
shuffleday = choice(day)
print(shuffleday)
shuffleday
的值为None
,因为shuffle
函数不返回新列表,它只是更改作为参数提供的列表中元素的顺序。
这将返回一个随机数的值。选择一个:
shuffleday = choice(range(3,29))
或
shuffleday = randint(3,29)
或
shuffleday = randrange(3,29)
事实上,shuffle
函数不会返回任何内容,它会将元素打乱(在day
中(。
尝试print(day)
而不是
random.shuffle
在适当的位置修改列表,它不返回值。这样你就可以用替换倒数第二行
shuffle(day)
然后简单地打印shuffle而不生成新变量。
此外,我想说,最好只从random
导入您需要的内容,而不是进行*
导入并弄乱您的命名空间(尤其是考虑到您是该语言的新手,不太可能知道随机库中每个函数的名称(。在这种情况下,你可以做:
from random import shuffle