Python列表使用切片扩展功能

在开始一项新工作之前,我正在自学Python。 它是Django的工作,所以我必须坚持2.7。 因此,我正在阅读Hetland的Beginning Python,并且不理解他使用slice来复制list.extend()功能的例子。

首先,他展示了extend方法

a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b)

产生[1, 2, 3, 4, 5, 6]

接下来,他演示了通过切片延伸

a = [1, 2, 3]
b = [4, 5, 6]
a[len(a):] = b

它产生与第一个例子完全相同的输出。

这个怎么用? A的长度为3,终止片索引点为空,表示它运行到列表的末尾。 如何在b值被添加到a


Python的切片分配语法的意思是“使这个切片等于这个值,如果需要,扩大或缩小列表”。 为了完全理解它,你可能想要尝试一些其他切片值:

a = [1, 2, 3]
b = [4, 5, 6]

首先,让A一部分替换为B

a[1:2] = b
print(a) # prints [1, 4, 5, 6, 3]

您可以通过分配一个零长度片来添加它们,而不是替换某些值:

a[1:1] = b
print(a) # prints [1, 4, 5, 6, 2, 3]

任何“超越界限”的切片只是在列表的一端或另一端的空白区域寻址(太大的正数将会解决刚结束的点,而太大的负数会在开始之前解决该点):

a[200:300] = b
print(a) # prints [1, 2, 3, 4, 5, 6]

您的示例代码只是使用列表末尾最“精确”的越界切片。 我不认为那是你故意用于扩展的代码,但它可能是有用的,因为你不需要用特殊的逻辑来处理边缘情况。


它只是普通索引的扩展。

>>> L
[1, 2, 3, 4, 5]
>>> L[2] = 42
>>> L
[1, 2, 42, 4, 5]

__setitem__()方法检测到正在使用片而不是正常的索引,并且行为适当。


a = [1, 2, 3]
b = [4, 5, 6]
a[len(a):] = b

意味着from from len(a)中的元素是b中的元素。 这意味着用b扩展a。

链接地址: http://www.djcxy.com/p/26757.html

上一篇: Python list extend functionality using slices

下一篇: slice/stride by variable?