簡體   English   中英

Python:如何使用切片擴展列表列表?

[英]Python: How to Extend List with List using Slicing?

注意:python Extend將在最后使用現有列表擴展您的給定列表。

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

如何使用切片做同樣的事情?

在第0個位置,中間或其他地方,它按預期工作,

>>>l = [2,4,6,8,10]
>>>l[:0] = [0, 1]
>>>l
>>>[0,1,2,4,6,8,10]

即使我嘗試過,

>>> l[len(l):] = [100]
>>> l
[2, 4, 6, 8, 10, 100]
>>> 

沒有使用像len()這樣的函數有更好的方法嗎?

但最后它在最后一個值之前插入。

>>> l[-1:-1] = [100]
>>> l
[2, 4, 6, 8, 100, 10]

預期產量,

>>>[2, 4, 6, 8, 10, 100]

我知道使用extend()方法,但我想在最后使用切片實現..

這是有效的,雖然它不是那樣的:

l[len(l):] = [100]

簡而言之,不完全是因為切片如何工作 (強調我的):

ij的s的片被定義為具有索引k的項的序列,使得i <= k < j 如果ij大於len(s) ,則使用len(s) 如果省略iNone ,則使用0 如果省略j或None ,則使用len(s) 如果i大於或等於j ,則切片為空。

不過,請注意, lists實際上具有最大大小,我們可以使用sys.maxsize找到sys.maxsize 如果我們使用它作為slice的開頭,結合上面強調的部分,我們實際上可以做一些適用於所有lists東西:

import sys

END = sys.MAXSIZE

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

a[END:] = b
print(a)

輸出:

[1, 2, 3, 4, 5]

當然,實際上,只需使用len(a)

只使用不使用切片的+= ,但是不使用像len這樣的內置函數的方法之一

In [1]: a = [1,2,3]                                                                                                                                                               

In [2]: a += [4,5]                                                                                                                                                                

In [3]: a                                                                                                                                                                         
Out[3]: [1, 2, 3, 4, 5]

為了使用切片,python文檔已經提供了一個解決方案,在Amadan的回答中也有提到。 https://docs.python.org/3/tutorial/datastructures.html

list.extend(iterable)。
通過附加iterable中的所有項來擴展列表。 相當於[len(a):] = iterable。

根據@Devesh分享的文件,

Data Strutures它擴展了你的列表,我們需要列表的長度。

所以我們可以使用內置函數len()以簡單的方式完成它。

否則我們可以使用sys.maxsize

>>> l = [2,4,6,8,10]
>>> import sys
>>> l[sys.maxsize:] = [100, 200]
>>> l
[2, 4, 6, 8, 10, 100, 200]
>>> 

還有一個解決方案

似乎好一點,

>>> l = [2,4,6,8,10]
>>> l[-1:] = l[-1:]+[100, 200, 300]
>>> l
[2, 4, 6, 8, 10, 100, 200, 300]
>>> 

這是我嘗試使用[].reverse()方法的另一種方法。

>>> l = [2,4,6,8,10]
>>> l.reverse()
>>> l[:0] = [3,5,7][::-1]
>>> l
[7, 5, 3, 10, 8, 6, 4, 2]
>>> l.reverse()
>>> l
[2, 4, 6, 8, 10, 3, 5, 7]
>>> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM