把這個代碼:itertools沒有關於Python 3.6認識numpy的整數作爲有效輸入
import itertools as it
import numpy as np
data = ['a','b','c','d']
dw = np.array([1, 3], dtype=np.int64)
print(list(it.islice(data,dw[0],dw[1],1)))
在Python 2.7版將打印['b', 'c',]
預期。
有關python 3.6拋出異常:
ValueError: Stop argument for islice() must be None or an integer: 0 <= x <= sys.maxsize.
這同樣適用於np.int32
和itertools
封裝的其他方法拋出類似的錯誤,例如當你使用permutations
時,你會得到TypeError: Expected int as r
。
除了this numpy issue以及其他相關產品之外,我無法在這方面找到太多內容,但是那個在3年前已經關閉,這意味着它已經解決了。
像索引numpy整數data[dw[0]]
或布爾比較像dw[0] == 1
工作就好了。
我錯過了什麼嗎?這可能是一個Python 3的錯誤?
最簡單的解決方法是使用類型轉換:int(dw [0]),int(dw [1])' – TheDarkKnight
即使它工作,py2.7,使用數組而不是列表會更慢。 – hpaulj
正是那種讓我討厭Python的東西。 –