Возьмите этот код:
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
.
Я не мог найти многого, кроме этой проблемы с numpy и связанных с ней, но этот был закрыт 3 года назад, подразумевая, что это было решена.
И основные вещи, такие как индексирование с numpy ints data[dw[0]]
или логические сравнения, такие как dw[0] == 1
, работают очень хорошо.
Я что-то упустил? Может ли это быть ошибкой Python 3?