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

时间:2015-02-22 03:36:38

标签: 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, start, end)

2 个答案:

答案 0 :(得分:1)

无法创建一个'窗口'在列表上,没有。

你唯一的选择是创建一个切片,或者将开始和结束索引传递给函数,并让函数尊重它们。

后者是bisect module functions所做的事情;每个函数都采用lohi参数,默认分别为0len(list)

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

答案 1 :(得分:0)

为什么不创建第二个参数,以便Func(a)变为Func(a,n),其中a是对数组的引用,n是数组中要评估的位置?

类似的东西:

Func (a, 2)

通过该示例,评估前三个元素。