我想知道如何定义一个函数,该函数允许将范围设置为某个列表的起始索引。例如:
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)等等。我怎样才能创建一个设置范围开始的函数=我将插入每个股票的特定指数?
答案 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)
。