如何设置具有未知起始索引的范围

时间:2018-05-07 01:23:30

标签: python

我想知道如何定义一个函数,该函数允许将范围设置为某个列表的起始索引。例如:

def pTrend(stock):
    pTrend = []
    for x in range(0, len(stock)):
         if x > 0:
              print('This')
         if x < 0:
              print('That')

我有库存数据列表,第一个来自范围(0,250),下一个来自(250,500)等等。我怎样才能创建一个设置范围开始的函数=我将插入每个股票的特定指数?

1 个答案:

答案 0 :(得分:1)

我不认为让函数维持这样的状态是一种好形式。如果可能,您应该尝试让调用者代码为您维护状态。例如,让调用者代码维护一个cumsum变量,并将其作为偏移量传递给pTrend

def pTrend(stock, offset):
    pTrend = []
    for i in range(len(stock)):
        i += offset
        ...

这是有效的,enumerate(如this comment中提到的那样):

def pTrend(stock, offset):
    for i, s in enumerate(stock, offset):
        ...

现在,在您的来电代码中,您有:

cumsum = 0
for stock in stocks:
    ... = pTrend(stock, cumsum)
    cumsum += len(stock)

或者,定义一个类并让它跟踪cumsum变量。

class Foo:
    def __init__(self):
        self.cumsum = 0

    def pTrend(self, stock): 
        pTrend = []
        for i, s in enumerate(stock, self.cumsum):
            ...
        self.cumsum += len(stock)

初始化对象:

f = Foo()

并像往常一样将pTrend称为f.pTrend(stock)