打乱对象列表
编程中的一个常见任务是打乱对象列表。在 Python 中,有一个内置函数可以实现此目的:random.shuffle()。但是,如果您不熟悉其细微差别,它的行为可能会出乎意料。
问题
为什么在列表上调用 random.shuffle() 时对象,返回 None 而不是打乱的列表?
答案
random.shuffle() 就地修改其输入列表,这意味着它不会创建新列表,而是对现有列表的元素进行打乱列表。因此,它没有任何返回值,因此结果为 None。此行为与 Python 的可变对象约定一致,其中修改它们的函数通常返回 None。
示例
要演示这一点,请考虑以下代码:
from random import shuffle l = [[i] for i in range(10)] shuffle(l) print(l)
代码创建一个列表列表并使用 shuffle() 对其进行洗牌。打印结果列表表明它已成功重新排列:
[[9], [2], [7], [0], [4], [5], [3], [1], [8], [6]]
在此示例中,random.shuffle() 确实修改了原始列表,返回 None。
以上是为什么 Python 的 random.shuffle() 返回 None 而不是打乱后的列表?的详细内容。更多信息请关注PHP中文网其他相关文章!