![](/img/trans.png)
[英]How can I get a range of rows in a python list without creating a new list object?
[英]How to get part of a list in Python without creating a new list?
我有一個列表a = [1,2,3,4,5]
。 我有一個函數,例如Func(x)
。 我知道如果我執行Func(a)
那么對a
的引用將傳遞給Func(x)
。 如果我執行Func(a[:])
,將創建一個新列表並將其傳遞給Func(x)
。
所以我的問題是:是否可以像Func(a)
一樣僅通過引用將前三個元素傳遞給Func(x)
Func(a)
由於某些原因,我不想將整個列表a
傳遞給函數)? 如果我執行Func(a[:4])
將創建一個新列表,這就是我要避免的列表。
我能想到的唯一方法是將a
和索引傳遞a
Func(x)
,就像Func(a, start, end)
。
沒有辦法在列表上創建“窗口”。
您唯一的選擇是創建一個切片,或將開始索引和結束索引傳遞給該函數並使該函數遵循這些索引。
后者就是bisect
模塊的功能 ;例如, 每個函數都帶有一個lo
和hi
參數,它們分別默認為0
和len(list)
:
def func(lst, lo=0, hi=None):
if hi is None:
hi = len(lst)
為什么不創建第二個參數,使Func(a)成為Func(a,n),其中a是對數組的引用,n是您要求值到的數組中的位置?
就像是:
Func (a, 2)
在該示例中,對前三個元素進行了評估。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.