为什么 。 没有任何?
为什么 。 返回无?
>>> 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']
好了,今天的主题就讲到这里吧,不管如何,能帮到你我就很开心了,如果您觉得这篇文章写得不错,欢迎点赞和分享给身边的朋友。