簡體   English   中英

如何在Python中獲得列表的一部分而不創建新列表?

[英]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模塊的功能 ;例如, 每個函數都帶有一個lohi參數,它們分別默認為0len(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.

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