【发布时间】:2015-11-02 07:50:45
【问题描述】:
在 Python 中,每当我尝试在这样的列表中使用 .sort() 或 random.shuffle() 时:
a = [1, 3, 2].sort()
b = random.shuffle([1, 3, 2])
a 和 b 将是 None,因为这两种方法都返回 None。
当然,我知道.sort() 有一个sorted() 函数。但是,random.shuffle() 没有。所以解决这个问题的方法是:
a = [1, 3, 2]
random.shuffle(a)
b = a
或来自another post:
b = sorted([1, 3, 2], key=lambda k: random.random())
是否有一种通用且优雅的方式将文字(由返回 None 的方法编辑的文字)存储到变量中?
【问题讨论】:
-
为什么不写你自己的
shuffled来复制、洗牌并返回一个可迭代的参数?这些方法就地改变了它们的参数,所以你已经有了对结果的引用; 它与您传入的对象相同。b = a可能发生在相同的结果之前或之后 - 它只是一个参考,不是副本。 -
我已经删除了 "immediate",因为不清楚您的意思 - 您指的是 literals 吗?
-
是的,我指的是文字。
-
那么不,没有一般的方法 - 在
.sort的情况下(或任何其他具有确定性结果的情况),您按顺序编写文字,如果需要随机只是在第二行操作它。这将比您显示的随机排序更明确。 -
我明白了。
.sort()是一个不好的例子。
标签: python python-2.7 methods