For-Loop over (pd.read_pickle) DataFrame не работает

Синтаксис [e1, e2 .. e3] - действительно синтаксический сахар для enumFromThenTo e1 e2 e3, который является функцией в Enum typeclass.

Стандарт Haskell определяет его семантику следующим образом :

Для типов Int и Integer функции перечисления имеют следующее значение:

  • Последовательность enumFrom e1 - это список [e1,e1 + 1,e1 + 2,…] ].
  • Последовательность enumFromThen e1 e2 - это список [e1,e1 + i,e1 + 2i,…], где приращение i равно e2 − e1. Инкремент может быть нулем или отрицательным. Если приращение равно нулю, все элементы списка одинаковы.
  • Последовательность enumFromTo e1 e3 - это список [e1,e1 + 1,e1 + 2,…e3]. Список пуст, если e1 > e3.
  • Последовательность enumFromThenTo e1 e2 e3 - это список [e1,e1 + i,e1 + 2i,…e3], где приращение i равно e2 − e1. Если приращение положительное или ноль, список заканчивается, когда следующий элемент будет больше, чем e3; список пуст, если e1 > e3. Если приращение отрицательное, список заканчивается, когда следующий элемент будет меньше e3; список пуст, если e1 < e3.
blockquote>

Это в значительной степени то, что вы ожидаете, но экземпляры Float и Double определяются по-разному:

Для Float и Double семантика семейства enumFrom задана правилами для Int выше, за исключением того, что список заканчивается, когда элементы становятся больше e3 + i∕2 для положительного приращения i или когда они становятся меньше e3 + i∕2 для отрицательных i.

blockquote>

Я не совсем уверен, что оправдание для этого, поэтому единственный ответ Я могу дать вам то, что это так, потому что он определен таким образом в стандарте.

Вы можете обойти это, перечислив использование целых чисел и преобразовывая его в Float.

Prelude> map fromIntegral [1, 3 .. 10] :: [Float]
[1.0,3.0,5.0,7.0,9.0]

0
задан Gusztáv Ottrubay 13 July 2018 в 15:12
поделиться