константа наибольшего числа в python3 [duplicate]

Другие два варианта:

Базовый пакет:

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')
464
задан bdhar 30 September 2011 в 02:01
поделиться

6 ответов

Python 3

В Python 3 этот вопрос не применяется. Обычный int тип неограничен.

Однако вы действительно можете искать размер слова в машине . Это все еще доступно в Python 3 как sys.maxsize.

Python 2

В Python 2 максимальное значение для простых значений int доступно как sys.maxint:

>>> sys.maxint
9223372036854775807

Вы можете вычислить минимальное значение с -sys.maxint - 1, как показано здесь здесь .

Python плавно переключается с простых на длинные целые числа, как только вы превысите это значение. Поэтому большую часть времени вам не нужно это знать.

531
ответ дан senderle 22 August 2018 в 04:18
поделиться
  • 1
    Это число может показаться произвольным, но это не так. 9223372036854775807 - это точно 2^63 - 1, поэтому у вас есть 64-битный int. Как правило, n-разрядное целое число имеет значения от -2^(n-1) до 2^(n-1) - 1. – NullUserException 30 September 2011 в 02:18
  • 2
    Обратите внимание, что если вы используете 32-разрядную среду исполнения Python, sys.maxint вернет 2^31 - 1, хотя Python будет плавно переходить на 64-битный тип данных long. – Scott Stafford 26 February 2014 в 18:19
  • 3
    Вместо этого используйте sys.maxsize, как это предложил @Akash Rana. Он присутствует также в Python 2, , как sys docs . Это сделает код более совместимым с версиями Python. – Ioannis Filippidis 27 October 2015 в 21:54
  • 4
    У нас с вами разные интерпретации этой строки из документов. Замена в 2to3 является прекрасной быстротекущей эвристикой, которая не будет ломать что-либо большую часть времени, но имеет значение разница между этими двумя значениями. Лучшей практикой является использование значения, которое вы на самом деле хотите использовать. Если вам действительно нужно > sys.maxint в Python 2, вам больше не понадобится это в Python 3, и он действительно должен быть полностью удален, а не изменен на sys.maxsize. – senderle 1 November 2015 в 13:51
  • 5
    minsize - Умножение с помощью побитового min-оператора дает minsize ~ sys.maxsize – om471987 14 October 2016 в 15:33

Константа 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.

См. https://docs.python.org/3/whatsnew/3.0.html

169
ответ дан Akash Rana 22 August 2018 в 04:18
поделиться

Если вам просто нужно число, большее, чем все остальные, вы можете использовать

float('inf')

аналогичным образом, число меньшее, чем все остальные:

float('-inf')

работает как на python 2, так и на 3.

114
ответ дан Melle 22 August 2018 в 04:18
поделиться
  • 1
    Просто примечание tho (как это не имеет значения, но все же): float ('inf') & gt; float ('inf') приводит к «false». Бесконечное число должно быть больше, чем другое бесконечное число: -D ... умные привязки – Scre 28 June 2017 в 14:49
  • 2
    @Scre Что еще вы ожидаете? x > x обычно False, и бесконечность не должна быть исключением. (float('NaN), с другой стороны ...) – jamesdlin 6 September 2017 в 02:03
  • 3
    Это действительно не относится к int cauze cannot convert infinite float to int ... но работает в большинстве случаев – Leighton 23 September 2017 в 23:16
  • 4
    @Scre & quot; В операциях сравнения положительная бесконечность больше всех значений, кроме самого себя и NaN, а отрицательная бесконечность меньше всех значений, кроме самого себя и NaN. gnu.org/software/libc/manual/html_node/Infinity-and-NaN.html – Nathan 7 December 2017 в 06:38

Я сильно полагаюсь на такие команды.

python -c 'import sys; print(sys.maxsize)'

Макс. int возвращен: 9223372036854775807

Для получения дополнительных ссылок для 'sys' вы должны получить доступ к

https://docs.python.org/3/library/sys.html

https://docs.python.org/3/library/sys. HTML # sys.maxsize

0
ответ дан Amit Dube 22 August 2018 в 04:18
поделиться

В целых числах Python автоматически переключается из представления фиксированного размера int в представление ширины переменной long после передачи значения sys.maxint , которое или 231 - 1 или 263 - 1 в зависимости от вашей платформы. Обратите внимание на L, который добавляется сюда:

>>> 9223372036854775807
9223372036854775807
>>> 9223372036854775808
9223372036854775808L

Из руководства Python :

Числа создаются числовыми литералами или как результат встроенных функций и операторов. Необжитые целочисленные литералы (включая двоичные, шестнадцатеричные и восьмеричные числа) дают простые целые числа, если только они не обозначают слишком большое значение, чтобы быть представлены как простое целое число, и в этом случае они дают длинное целое число. Целочисленные литеры с суффиксом 'L' или 'l' дают длинные целые числа ('L' предпочтительнее, потому что 1l выглядит слишком много, как одиннадцать!).

Python очень тяжело притворяется его целые числа являются математическими целыми числами и неограничены. Он может, например, легко вычислить googol :

>>> 10**100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L
70
ответ дан John Kugelman 22 August 2018 в 04:18
поделиться
  • 1
    Чтобы добавить к путанице, Python long не похож на Java long - он ближе к BigInteger. – NullUserException 30 September 2011 в 02:20

Для Python 3 это

import sys
max = sys.maxsize
min = -sys.maxsize -1
17
ответ дан user6655984 22 August 2018 в 04:18
поделиться
  • 1
    Мин должен быть -sys.maxint - 1 – York 18 March 2017 в 14:54
  • 2
    python 3 не существует. см. stackoverflow.com/questions/13795758/… – netskink 28 March 2017 в 12:14
  • 3
    ну, python 3 действительно существует , к счастью (!); но sys.maxint не существует в константе python 3 (tl; dr: & quot; sys.maxint была удалена (в python3), так как больше нет предела значению целых чисел. Однако sys.maxsize может использоваться как целое число, большее, чем любой практический список или индекс строки. & quot; ) – michael 16 July 2017 в 00:33
  • 4
    lol, это опечатка. Я не уверен, что я думал в то время. В python 3 -sys.maxinit не существует или, возможно, этого не существует в python 3. Я рад, что вы знали, что я имел в виду. 8-) – netskink 10 August 2017 в 18:20
  • 5
    Зачем создавать переменные, которые создают тени, такие как min() и max()? – RoadRunner 12 July 2018 в 00:38
Другие вопросы по тегам:

Похожие вопросы: