2014-10-28 29 views

回答

12

您可以分配到列表aslice像这样:

>>> a = [1, 2, 3, 7, 8] 
>>> b = [4, 5, 6] 
>>> a[3:3] = b 
>>> a 
[1, 2, 3, 4, 5, 6, 7, 8] 
>>> 

[3:3]可能看起来怪异,但它是必须将列表b中的项目正确插入列表a。否则,如果我们分配到的a索引,表b本身将被插入:

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

我试图找到其中明确提到此行为的文档的链接,但是不成功的(请随时免费添加一个,如果你能找到它)。所以,我只是说,做a[3:3] = b告诉Python采取列表b中的项目,并将它们放置在由[3:3]表示的列表a的部分中。此外,Python将根据需要扩展列表a以适应此操作。

总之,这只是Python的另一个很棒的功能。 :)

+0

如何非常整齐:) – MrDuk 2014-10-28 15:54:25

+3

问这“为什么”这个工作会有多大?我的意思是,直观地说,如果我们采用数组隐喻,这不应该起作用,因为一个元素与另一个元素之间没有“空间”来添加N个以上的元素。显然,python以一种可能的方式实现了列表,但我会问:“规范中是否有某些东西可以让我们预测这应该起作用?” (否则这将是一个黑客)。 +1! – heltonbiker 2014-10-28 15:56:45

+0

@heltonbiker - 让我们仔细查看文档,看看是否记录了此行为。如果没有,我会尝试自己解释。 – iCodez 2014-10-28 16:03:35

2

尝试使用排序方法如下:

>>> a = [1,2,3,7,8] 
>>> b = [4,5,6] 
>>> a = sorted(a+b) 
>>> a 
[1, 2, 3, 4, 5, 6, 7, 8] 
相关问题