Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

689
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda