1

下面是给我一些问题的代码片段。我要做的是找到每一次出现的 356 天高点。为此,我正在尝试类似于下面的代码,但在“for i”行上出现异常:'builtin_function_or_method' object has no attribute ' getitem '

Quote = namedtuple("Quote", "Date Close Volume")

quotes = GetData() # arrray

    newHighs = []
    for i,q in range[365, len(quotes)]:  #<--Exception
        max = max(xrange[i-365, i].Close)  #<--i know this won't work, will fix when i get here
        if (q.Close > max):
            newHighs.append(i,q)

任何有关解决此问题的帮助将不胜感激。此外,任何以有效方式实现这一点的技巧(因为引号数组目前有 17K 元素)也很好。

4

2 回答 2

3

range is a function that returns a generator (or list in python2). Thus, it must be called as a function range(365, len(quotes)), which will return all the numbers from 365 to len(quotes).

Square brackets imply indexing, like accessing items in a list. Since range is a function, not a list, it throws an exception when you try to access it.

于 2013-11-08T20:56:41.737 回答
3

“范围”是一个函数。这意味着您使用圆括号,而不是方括号。这与下面一行中的“xrange”处理相同。我理解您为什么会考虑使用方括号,但“范围”所做的是使用这些参数创建列表。因此,它与您想要列表的元素 m 到 n 时不同。

于 2013-11-08T20:55:57.547 回答