Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

688
Visualizações
Advertencia de tipo inesperado generada con la lista en PyCharm

Directamente al grano, a continuación se muestra el código de muestra que generará un error en PyCharm:

 list1 = [0] * 5 list1[0] = '' list2 = [0 for n in range(5)] list2[0] = ''

PyCharm luego devuelve un error en la línea 2 y la línea 4 como se muestra a continuación:

 Unexpected type(s):(int, str)Possible type(s):(SupportsIndex, int)(slice, Iterable[int])

Ejecutar el código no causaría ningún error, pero PyCharm sigue generando el mensaje anterior cuando estoy codificando. Me pregunto por qué PyCharm daría este error y cómo puedo resolverlo con el código más limpio. Gracias.

Editar: lo siento, aquí hubo un error tipográfico en la línea 3 del código de muestra que se ha corregido. ( list2 = [0 for n in range(0)] debería ser list2 = [0 for n in range(5)] )

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

En su caso, PyCharm lo ve en la primera línea y piensa que el tipo de lista es List[int] . Quiero decir que es una lista de enteros.

Puede notar que su lista no tiene tipo int y puede aceptar cualquier valor de esta manera:

 from typing import Any, List list1: List[Any] = [0] * 5 list1[0] = ''

Usé el módulo de escritura solo para explicar la idea. Aquí hay una forma simple de anunciar que list1 es solo una lista de cualquier cosa:

 list1: list = [0] * 5 list1[0] = ''

También considere usar la tipificación más estricta posible. Puede ayudarte a prevenir errores.

Si necesita cadenas e ints, use esto:

 from typing import List, Union list1: List[Union[int, str]] = [0] * 5 # Starting from Python 3.10 you may use List[int|str] instead

Documentos aquí: https://docs.python.org/3/library/typing.html

over 4 years ago · Santiago Trujillo Relatório

0

esto es solo una advertencia de la herramienta de inspección de código.

Básicamente dice que creó una lista de números enteros (que contiene cinco elementos iguales a 0 ), y luego está reemplazando un número entero con una cadena.

Esto no genera errores en python, ya que es extremadamente flexible con los tipos de datos, y puede generar una lista con diferentes tipos de datos si lo desea.

Solo le advierte que algo podría salir mal si usa esa lista más adelante en algún código que espera solo números enteros y encuentra en su lugar un elemento que es una cadena.

Puede resolver esto deshabilitando la inspección o creando directamente una lista de cadenas.

 list1 = [""] * 5 list2 = ["" for n in range(0)]

o también

 list1 = ["0"] * 5 list2 = ["0" for n in range(0)]

O simplemente puede ignorar la advertencia, siempre que tenga en cuenta que la lista puede contener diferentes tipos de datos.

over 4 years ago · Santiago Trujillo Relatório

0

Como han dicho otros, esto es solo una advertencia que le dice que tenga cuidado.

Si desea ser explícito acerca de que su lista tome valores arbitrarios, puede proporcionar una sugerencia de tipo adecuada:

 from typing import Any, List list1: List[Any] = [0] * 5 list1[0] = ''

Si tiene la intención de poner números enteros o cadenas, pero nada más en la lista, también puede hacer list1: List[int|str] = [0] * 5 a partir de Python 3.10, o use el tipo torpe typing.Union en versiones anteriores.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda