为什么 。 没有任何?

为什么 。 返回无?

>>> x = ['foo','bar','black','sheep']

>>> 来自

>>> 打印(x)

没有任何

如何获取打乱后的值而不是 None ?

.() 更改 x 的列表。

就地改变结构的 API 方法通常返回 None 而不是修改后的数据结构。

>>> x = ['foo', 'bar', 'black', 'sheep']

>>> .(x)

>>> x

['黑色'、'酒吧'、'羊'、'富']

如果要基于现有列表创建新的随机打乱列表,其中现有列表保持有序,则可以将 .() 与输入的完整长度一起使用:

.(x, 长度(x))

您还可以使用 () 和 .() 作为排序键:

= (x, 键= k: .())

但这会调用排序(O(N log N) 操作),而对输入长度进行采样只需要 O(N) 操作(使用与 .() 相同的过程,从收缩池中交换出随机值)。

演示:

>>>

>>> x = ['foo', 'bar', 'black', 'sheep']

>>> .(x, len(x))

['酒吧','羊','黑色','富']

>>> (x, 键= k: .())

['羊','富','黑色','酒吧']

>>> x

['foo', 'bar', 'black', 'sheep']

这个方法也有效。

= .(, len())

为什么,真的吗?

1. 效率

修改列表。

这很好,因为如果您不再需要原始列表,复制大列表将是纯粹的开销。

2. 风格

根据“显式优于隐式”的风格原则,返回一个列表是一个坏主意,因为这样可能会显得它是一个新列表,而实际上它不是。

但我不喜欢这个!

如果您确实需要一个新列表,则必须编写类似的内容

new_x = list(x) # 复制一份

.(new_x)

非常清楚。

如果你经常需要这个惯用语,请将其放入 new_x 中。

在函数中(参见)

根据文档:

x 就位。 这是一个

0 – [0.0, 1.0) 中的浮点数; 经过

,这就是()。

>>> x = ['foo','bar','black','sheep']

>>> 来自

>>> (x)

>>> x

['酒吧','黑色','羊','富']

我对这个概念有这样的感觉:

10

11

12

13

14

15

16

17 号

18

x = ['foo','black','sheep'] # 列表

y = list(x) # 的副本

对于范围(5)内的 i:

print (y) # “就地” “无”

打印 x,y # ,然后复制

>>>

没有任何

['富','黑','羊'] ['富','黑','羊']

没有任何

['foo', 'black', 'sheep'] ['black', 'foo', 'sheep']

没有任何

['foo', 'black', 'sheep'] ['sheep', 'black', 'foo']

没有任何

['foo', 'black', 'sheep'] ['black', 'foo', 'sheep']

没有任何

['foo', 'black', 'sheep'] ['sheep', 'black', 'foo']

好了,今天的主题就讲到这里吧,不管如何,能帮到你我就很开心了,如果您觉得这篇文章写得不错,欢迎点赞和分享给身边的朋友。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注