Não tenho certeza se os inteiros do Python são limitados. No momento em que você cruza sys.maxint, ele muda a representação interna de int para long, que tem presicion ilimitada.
capítulo
Eu perguntei porque preciso encontrar um valor mínimo entre um grupo de valores um por um. Então, primeiro preciso armazenar um valor grande em uma variável para que eu possa compará-la com outras
Sreevisakh
2
Para o seu comentário - eu recomendo usar a função embutida min.
Jiri
5
Você não precisa do valor máximo se estiver apenas tentando encontrar o mínimo, mesmo se estiver programando em C ++ ou qualquer outra linguagem. Se você vai apenas percorrer todos os elementos de qualquer maneira, simplesmente use o primeiro elemento como seu valor inicial. (Mas é melhor usar a minfunção, se você realmente deseja programar em Python!)
John Y
3
@Sreevisakh: para o "grande valor", use infinito float("inf"),. Ou melhor, use a minfunção embutida.
Fred Foo
Respostas:
132
Inteiros longos:
Não há limite definido explicitamente. A quantidade de espaço de endereço disponível constitui um limite prático.
(Retirado deste site). Veja os documentos sobre Tipos numéricos onde você verá isso Long integers have unlimited precision. No Python 2, os números inteiros mudam automaticamente para longos quando crescem além de seu limite:
O valor máximo de um int pode ser encontrado no Python 2.x com sys.maxint. Ele foi removido no Python 3, mas sys.maxsizegeralmente pode ser usado em seu lugar. Do changelog :
A constante sys.maxint foi removida, uma vez que não há mais um limite para o valor de inteiros. No entanto, sys.maxsize pode ser usado como um número inteiro maior do que qualquer lista prática ou índice de string. Ele está em conformidade com o tamanho inteiro “natural” da implementação e é normalmente o mesmo que sys.maxint em versões anteriores na mesma plataforma (assumindo as mesmas opções de construção).
e, para qualquer pessoa interessada na diferença (Python 2.x):
sys.maxint O maior inteiro positivo suportado pelo tipo de inteiro regular do Python. Isso é pelo menos 2 ** 31-1. O maior inteiro negativo é -maxint-1 - a assimetria resulta do uso da aritmética binária do complemento de 2.
sys.maxsize O maior inteiro positivo suportado pelo tipo Py_ssize_t da plataforma e, portanto, o tamanho máximo que listas, strings, dicts e muitos outros contêineres podem ter.
sys.maxsize
Um inteiro que fornece o valor máximo que uma variável do tipo Py_ssize_t pode assumir. Geralmente é 2 ^ 31-1 em uma plataforma de 32 bits e 2 ^ 63-1 em uma plataforma de 64 bits.
flutua:
Existe float("inf")e float("-inf"). Eles podem ser comparados a outros tipos numéricos:
Tentei o mesmo código, mas ele ainda mostra o tipo como int em python 3 na máquina com Windows de 64 bits. Qualquer motivo valioso para isso.
ManojP
1
@ManojP É porque não há mais um limite para o tamanho dos inteiros no Python 3. Veja a primeira citação de bloco. Vou editar para esclarecer que o exemplo é Python 2
keyser de
39
Python longpode ser arbitrariamente grande. Se precisar de um valor maior do que qualquer outro valor, você pode usar float('inf'), pois o Python não tem problemas para comparar valores numéricos de diferentes tipos. Da mesma forma, para um valor menor do que qualquer outro valor, você pode usar float('-inf').
Ele retorna infinito de ponto flutuante, que é maior do que qualquer número finito.
Taymon,
4
Devo dizer que essa resposta é definitivamente a que está mais perto de ser correta em termos de resposta à pergunta do título do OP. Isto é, "como você obtém um valor sentinela do Python que será maior do que todas as suas entradas (ou pelo menos não menor do que o maior valor)?". Portanto, votei positivamente nesta resposta, mas acho que é melhor se o OP aprender a pensar em Python.
John Y
Acordado. Dito isso, estive em uma situação em que essa era a única maneira de fazer o que precisava.
Taymon,
21
Resposta direta à pergunta do título:
Os inteiros são ilimitados em tamanho e não têm valor máximo em Python.
Resposta que aborda o caso de uso subjacente declarado:
De acordo com o seu comentário sobre o que está tentando fazer, você está pensando em algo na linha de
Não é assim que se pensa em Python. Uma tradução melhor para Python (mas ainda não a melhor) seria
minval = a[0]# Just use the first valuefor i in range(1, len(a)):
minval = min(a[i], a[i -1])
Observe que o acima não usa MAXINT. Essa parte da solução se aplica a qualquer linguagem de programação: você não precisa saber o maior valor possível apenas para encontrar o menor valor em uma coleção.
Mas de qualquer forma, o que você realmente faz em Python é apenas
minval = min(a)
Ou seja, você não escreve um loop. A min()função integrada obtém o mínimo de toda a coleção.
longtipo em Python 2.x usa aritmética de precisão arbitrária e não tem valor máximo possível. É limitado pela memória disponível. Python 3.x não tem nenhum tipo especial para valores que não podem ser representados pelo número inteiro nativo da máquina - tudo é inte a conversão é tratada nos bastidores.
Ao contrário de C / C ++, Long em Python tem precisão ilimitada. Consulte a seção Tipos numéricos em python para obter mais informações. Para determinar o valor máximo do inteiro, você pode apenas consultar sys.maxint. Você pode obter mais detalhes na documentação do sys .
O título é "Valor máximo para inteiro longo" , não o valor máximo de float. Portanto, sem uma explicação de como isso responde à pergunta, considero este NAA (não uma resposta).
Sнаđошƒаӽ
0
Em python3, você pode enviar o valor float para a função int e obter esse número 1,7976931348623157e + 308 na representação inteira.
Isso não faz nada de útil. Para ilustrar isso, tente int (sys.float_info.max) +1 e você obterá apenas um inteiro que é mais um, porque como outros comentários explicados, o Python apenas armazena inteiros de precisão ilimitados.
min
função, se você realmente deseja programar em Python!)float("inf")
,. Ou melhor, use amin
função embutida.Respostas:
Inteiros longos:
Não há limite definido explicitamente. A quantidade de espaço de endereço disponível constitui um limite prático.
(Retirado deste site). Veja os documentos sobre Tipos numéricos onde você verá isso
Long integers have unlimited precision
. No Python 2, os números inteiros mudam automaticamente para longos quando crescem além de seu limite:para inteiros nós temos
maxint e maxsize:
O valor máximo de um int pode ser encontrado no Python 2.x com
sys.maxint
. Ele foi removido no Python 3, massys.maxsize
geralmente pode ser usado em seu lugar. Do changelog :e, para qualquer pessoa interessada na diferença (Python 2.x):
e para completar, aqui está a versão Python 3 :
flutua:
Existe
float("inf")
efloat("-inf")
. Eles podem ser comparados a outros tipos numéricos:fonte
Python
long
pode ser arbitrariamente grande. Se precisar de um valor maior do que qualquer outro valor, você pode usarfloat('inf')
, pois o Python não tem problemas para comparar valores numéricos de diferentes tipos. Da mesma forma, para um valor menor do que qualquer outro valor, você pode usarfloat('-inf')
.fonte
Resposta direta à pergunta do título:
Os inteiros são ilimitados em tamanho e não têm valor máximo em Python.
Resposta que aborda o caso de uso subjacente declarado:
De acordo com o seu comentário sobre o que está tentando fazer, você está pensando em algo na linha de
Não é assim que se pensa em Python. Uma tradução melhor para Python (mas ainda não a melhor) seria
Observe que o acima não usa MAXINT. Essa parte da solução se aplica a qualquer linguagem de programação: você não precisa saber o maior valor possível apenas para encontrar o menor valor em uma coleção.
Mas de qualquer forma, o que você realmente faz em Python é apenas
Ou seja, você não escreve um loop. A
min()
função integrada obtém o mínimo de toda a coleção.fonte
long
tipo em Python 2.x usa aritmética de precisão arbitrária e não tem valor máximo possível. É limitado pela memória disponível. Python 3.x não tem nenhum tipo especial para valores que não podem ser representados pelo número inteiro nativo da máquina - tudo éint
e a conversão é tratada nos bastidores.fonte
Ao contrário de C / C ++, Long em Python tem precisão ilimitada. Consulte a seção Tipos numéricos em python para obter mais informações. Para determinar o valor máximo do inteiro, você pode apenas consultar
sys.maxint
. Você pode obter mais detalhes na documentação do sys .fonte
Você pode usar: o valor máximo de float é
para negativo
fonte
Em python3, você pode enviar o valor float para a função int e obter esse número 1,7976931348623157e + 308 na representação inteira.
fonte