Другие два варианта:
Базовый пакет:
df <- unstack(dat1, form = value ~ numbers)
rownames(df) <- unique(dat1$name)
df
sqldf
package:
library(sqldf)
sqldf('SELECT name,
MAX(CASE WHEN numbers = 1 THEN value ELSE NULL END) x1,
MAX(CASE WHEN numbers = 2 THEN value ELSE NULL END) x2,
MAX(CASE WHEN numbers = 3 THEN value ELSE NULL END) x3,
MAX(CASE WHEN numbers = 4 THEN value ELSE NULL END) x4
FROM dat1
GROUP BY name')
В Python 3 этот вопрос не применяется. Обычный int
тип неограничен.
Однако вы действительно можете искать размер слова в машине . Это все еще доступно в Python 3 как sys.maxsize
.
В Python 2 максимальное значение для простых значений int
доступно как sys.maxint
:
>>> sys.maxint
9223372036854775807
Вы можете вычислить минимальное значение с -sys.maxint - 1
, как показано здесь здесь .
Python плавно переключается с простых на длинные целые числа, как только вы превысите это значение. Поэтому большую часть времени вам не нужно это знать.
Константа sys.maxint была удалена из Python 3.0, вместо этого используется sys.maxsize
Целые числа
- PEP 237: по существу, длинный переименованный в int , То есть существует только один встроенный интегральный тип с именем int; но он ведет себя в основном как старый длинный тип.
- PEP 238: выражение типа 1/2 возвращает float. Используйте 1 // 2, чтобы получить усечение. (Последний синтаксис существует в течение многих лет, по крайней мере, с Python 2.2.)
- Константа sys.maxint была удалена, поскольку значение целых чисел больше не ограничено. Однако sys.maxsize может использоваться как целое число, большее любого практического списка или индекса строки. Он соответствует «натуральному» целочисленному размеру реализации и обычно совпадает с sys.maxint в предыдущих выпусках на той же платформе (при условии одинаковых возможностей сборки).
- Функция repr () длинного целого doesn 't включить trailing L больше, поэтому код, который безоговорочно ограничивает этот символ, вместо этого отменяет последнюю цифру. (Вместо этого используйте str ().)
- Восьмеричные литералы больше не имеют формы 0720; Вместо этого используйте 0o720.
Если вам просто нужно число, большее, чем все остальные, вы можете использовать
float('inf')
аналогичным образом, число меньшее, чем все остальные:
float('-inf')
работает как на python 2, так и на 3.
x > x
обычно False
, и бесконечность не должна быть исключением. (float('NaN)
, с другой стороны ...)
– jamesdlin
6 September 2017 в 02:03
int
cauze cannot convert infinite float to int
... но работает в большинстве случаев
– Leighton
23 September 2017 в 23:16
Я сильно полагаюсь на такие команды.
python -c 'import sys; print(sys.maxsize)'
Макс. int возвращен: 9223372036854775807
Для получения дополнительных ссылок для 'sys' вы должны получить доступ к
В целых числах Python автоматически переключается из представления фиксированного размера int
в представление ширины переменной long
после передачи значения sys.maxint
, которое или 231 - 1 или 263 - 1 в зависимости от вашей платформы. Обратите внимание на L
, который добавляется сюда:
>>> 9223372036854775807
9223372036854775807
>>> 9223372036854775808
9223372036854775808L
Из руководства Python :
Числа создаются числовыми литералами или как результат встроенных функций и операторов. Необжитые целочисленные литералы (включая двоичные, шестнадцатеричные и восьмеричные числа) дают простые целые числа, если только они не обозначают слишком большое значение, чтобы быть представлены как простое целое число, и в этом случае они дают длинное целое число. Целочисленные литеры с суффиксом
'L'
или'l'
дают длинные целые числа ('L'
предпочтительнее, потому что1l
выглядит слишком много, как одиннадцать!).Python очень тяжело притворяется его целые числа являются математическими целыми числами и неограничены. Он может, например, легко вычислить googol :
>>> 10**100 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L
long
не похож на Java long
- он ближе к BigInteger
.
– NullUserException
30 September 2011 в 02:20
Для Python 3 это
import sys
max = sys.maxsize
min = -sys.maxsize -1
sys.maxint
не существует в константе python 3 (tl; dr: & quot; sys.maxint
была удалена (в python3), так как больше нет предела значению целых чисел. Однако sys.maxsize
может использоваться как целое число, большее, чем любой практический список или индекс строки. & quot; i>)
– michael
16 July 2017 в 00:33
min()
и max()
?
– RoadRunner
12 July 2018 в 00:38
2^63 - 1
, поэтому у вас есть 64-битный int. Как правило, n-разрядное целое число имеет значения от-2^(n-1)
до2^(n-1) - 1
. – NullUserException 30 September 2011 в 02:182^31 - 1
, хотя Python будет плавно переходить на 64-битный тип данныхlong
. – Scott Stafford 26 February 2014 в 18:19sys.maxsize
, как это предложил @Akash Rana. Он присутствует также в Python 2, , какsys
docs . Это сделает код более совместимым с версиями Python. – Ioannis Filippidis 27 October 2015 в 21:542to3
является прекрасной быстротекущей эвристикой, которая не будет ломать что-либо большую часть времени, но имеет значение разница между этими двумя значениями. Лучшей практикой является использование значения, которое вы на самом деле хотите использовать. Если вам действительно нужно >>sys.maxint
в Python 2, вам больше не понадобится это в Python 3, и он действительно должен быть полностью удален, а не изменен наsys.maxsize
. – senderle 1 November 2015 в 13:51