类型对象' slice'没有len()?

时间:2017-04-28 20:01:58

标签: python python-3.x scipy

在Python 3中使用Python for Finance本书中的这个示例并获得此错误。我的理解是我需要使用切片才能拥有这个范围。否则我需要使用元组。

spo.brute(fo, (slice(-10, 10.1, 5)), (slice(-10, 10.1, 5)), finish=None)

TypeError: object of type 'slice' has no len()

1 个答案:

答案 0 :(得分:2)

不是将两个切片的元组作为ranges参数传递给scipy.optimize.brute,而是将一个切片作为ranges传递,将另一个切片作为args传递。你需要提供一个元组:

scipy.optimize.brute(fo, (slice(-10, 10.1, 5), slice(-10, 10.1, 5)), finish=None)

在函数调用之外定义元组可能更清楚:

ranges = (slice(-10, 10.1, 5), slice(-10, 10.1, 5))
scipy.optimize.brute(fo, ranges, finish=None)