如何在Python中获取列表的一部分而不创建新列表?

如何在Python中获取列表的一部分而不创建新列表?,python,list,Python,List,我有一个列表a=[1,2,3,4,5]。我有一个函数,比如说,Func(x)。我知道如果我执行Func(a),那么a的引用将被传递到Func(x)。如果我执行Func(a[:]),将创建一个新列表并将其传递到Func(x) 所以我的问题是:是否可以只通过引用将前三个元素传递到Func(x),比如Func(a)(由于某种原因,我不想将整个列表a传递到函数中)?如果我执行Func(a[:4])将创建一个新列表,这就是我想要避免的 我能想到的唯一方法是将a和索引传递到Func(x),比如Func(a,

我有一个列表
a=[1,2,3,4,5]
。我有一个函数,比如说,
Func(x)
。我知道如果我执行
Func(a)
,那么
a
的引用将被传递到
Func(x)
。如果我执行
Func(a[:])
,将创建一个新列表并将其传递到
Func(x)

所以我的问题是:是否可以只通过引用将前三个元素传递到
Func(x)
,比如
Func(a)
(由于某种原因,我不想将整个列表
a
传递到函数中)?如果我执行
Func(a[:4])
将创建一个新列表,这就是我想要避免的


我能想到的唯一方法是将
a
和索引传递到
Func(x)
,比如
Func(a,start,end)
为什么不创建第二个参数,使Func(a)变成Func(a,n),其中a是对数组的引用,n是数组中要求值的位置

比如:

Func (a, 2)

在该示例中,将对前三个元素进行评估

没有办法在列表上创建“窗口”,没有

您唯一的选择是创建一个切片,或者将开始索引和结束索引传递给函数,并让函数执行这些索引

例如,后者就是他们所做的;每个函数分别采用默认为
0
len(列表)
lo
hi
参数:

def func(lst, lo=0, hi=None):
    if hi is None:
        hi = len(lst)

为什么要避免创建新列表?有什么特别的原因吗?这是一个递归函数。如果我每次创建一个新列表,堆栈将溢出。然后将索引作为参数传递。@thefourtheye:谢谢。。。这也是我的想法。但我不会担心,除非你有内存异常。