这是什么意思?

时间:2011-05-29 10:41:03

标签: python arrays syntax slice

我正在分析一些Python代码,我不知道是什么

pop = population[:]

装置。它是像Java中的数组列表还是像二维数组? 能够感谢一些帮助,谢谢。

6 个答案:

答案 0 :(得分:99)

这是一个切片,它的作用取决于population的类型。如果population是列表,则此行将创建列表的副本。对于类型为tuplestr的对象,它将不执行任何操作(如果没有[:],该行将执行相同操作),对于(例如)NumPy数组,它将创建一个对同一数据的新观点。

答案 1 :(得分:26)

知道列表切片通常会复制列表的一部分也可能有所帮助。例如。 population[2:4]将返回一个包含population [2]和population [3]的列表(切片是右排的)。离开左右索引,如population[:]中它们分别默认为0和长度(人口),从而选择整个列表。因此,这是制作列表副本的常用习惯用法。

答案 2 :(得分:14)

嗯......这实际上取决于背景。最终,它会将slice对象(slice(None,None,None))传递给以下方法之一:__getitem____setitem____delitem__。 (实际上,如果对象具有__getslice__,则将使用该__getitem__代替x = obj[:] ,但现在已弃用,不应使用该对象。

对象可以使用切片执行他们想要的操作。

在上下文中:

obj.__getitem__

这将调用传递了切片对象的x = obj[slice(None,None,None)] 。事实上,这完全等同于:

slice

(虽然前者可能更有效,因为它不需要查找x[:] = obj 构造函数 - 它都是在字节码中完成的。)

对于大多数对象,这是一种创建序列部分的浅表副本的方法。

下一步:

__setitem__

是一种根据obj设置项目(它会调用del x[:] )的方法。

而且,我认为你可以猜到:

x[1:4]

来电; - )。

您还可以传递不同的切片:

slice(1,4,None)

构建x[::-1]

slice(None,None,-1)

构建{{1}}等等。进一步阅读:Explain Python's slice notation

答案 3 :(得分:9)

从序列的开头到结尾是slice,通常会产生浅拷贝。

(嗯,这是more than that,但你还不需要关心。)

答案 4 :(得分:6)

它创建了列表的副本,而不仅仅是为现有列表指定了新名称。

答案 5 :(得分:5)

[:]
用于数组中的限制器或切片,散列
例如:
[1:5]用于显示介于1和5之间的值,即1-4 [开始:结束]

基本上在数组中用于切片,理解括号接受变量,表示要显示的值或键,“:”用于将整个数组限制或切片为数据包。