[英]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]
簡而言之,不完全是因為切片如何工作 (強調我的):
從i到j的s的片被定義為具有索引k的項的序列,使得
i <= k < j
。 如果i或j大於len(s)
,則使用len(s)
。 如果省略i或None
,則使用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.