这是什么意思?
我正在分析一些Python代码,我不知道是什么
pop = population[:]
手段。 是像Java中的数组列表或二维数组? 可以欣赏一些帮助,谢谢。
这是一个切片,它取决于population
的types。 如果population
是一个列表,这一行将创build一个列表的副本。 对于一个types为tuple
或str
的对象来说,它什么也不做(这个命令行会在没有[:]
情况下执行相同的操作),对于一个(比如说)NumPy数组,它会为同一个数据创build一个新的视图。
这也可能有助于了解一个列表片通常是列表的一部分的副本。 例如population[2:4]
将返回包含人口[2]和人口[3]的列表(切片是正确的排他性的)。 离开左右索引,如在population[:]
分别默认为0和长度(人口),从而select整个列表。 因此,这是制作一份清单副本的常见习惯用语。
呃…这真的取决于上下文。 最终,它将slice
对象( slice(None,None,None)
)传递给以下方法之一: __getitem__
, __setitem__
或__delitem__
。 (实际上,如果对象有一个__getslice__
,将被用来代替__getitem__
,但是现在已经被弃用了,不应该被使用)。
对象可以做他们想要的切片。
在以下方面:
x = obj[:]
这将调用obj.__getitem__
的切片对象。实际上,这完全等价于:
x = obj[slice(None,None,None)]
(尽pipe前者可能更有效率,因为它不必查找slice
构造函数 – 这一切都是在字节码中完成的)。
对于大多数对象,这是创build序列的一部分的浅拷贝的一种方式。
下一个:
x[:] = obj
是一种设置基于obj
的项目(它调用__setitem__
)的方法。
而且,我想你大概可以猜到:
del x[:]
来电;-)。
你也可以通过不同的切片:
x[1:4]
构造slice(1,4,None)
x[::-1]
构造slice(None,None,-1)
等等。 进一步阅读: 解释Python的切片符号
它是从序列开始到结束的一个片段 ,通常产生一个浅拷贝。
(呃, 不止这些 ,但你不需要关心。)
它创build列表的一个副本,而不仅仅是为已经存在的列表分配一个新的名字。
[:]
用于限制器或数组中的切片,散列
例如:
[1:5]显示1和5之间的值,即1-4
[开始:结束]
基本上用于数组切片,理解括号接受variables的平均值或键显示,“:”用于限制或切片整个数组。