我有一个列表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)
。
答案 0 :(得分:1)
无法创建一个'窗口'在列表上,没有。
你唯一的选择是创建一个切片,或者将开始和结束索引传递给函数,并让函数尊重它们。
后者是bisect
module functions所做的事情;每个函数都采用lo
和hi
参数,默认分别为0
和len(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)
通过该示例,评估前三个元素。