una tuplas tupla repite recorrer que mas listas lista encontrar elemento ejemplos diccionarios diccionario convertir conjuntos como python

tuplas - listas en python



Compruebe si la entrada es una lista/tupla de cadenas o una sola cadena (8)

Tengo un método que me permite aceptar una sola cadena (una ruta, pero no necesariamente una que exista en la máquina que ejecuta el código) o una lista / tupla de cadenas.

Dado que las cadenas actúan como listas de caracteres, ¿cómo puedo saber qué tipo ha recibido el método?

Me gustaría poder aceptar cadenas estándar o unicode para una sola entrada, y listas o tuplas para múltiples, por lo que la instancia no parece ser la respuesta a menos que me esté perdiendo un truco ingenioso (como tomar ventaja de las clases antecesoras comunes?).

La versión de Python es 2.5


¿Has considerado la sintaxis varargs ? No estoy seguro de si esto es lo que estás preguntando, pero ¿algo así como esta pregunta estaría en tus líneas?


Como me gusta mantener las cosas simples, esta es la forma más corta que es compatible con 2.x y 3.x:

# trick for py2/3 compatibility if ''basestring'' not in globals(): basestring = str v = "xx" if isinstance(v, basestring): print("is string")


No puedes hacer:

(i == list (i) or i == tuple (i))

Respondería si la entrada es tupla o lista. El único problema es que no funciona correctamente con una tupla que contiene solo una variable.


Puede verificar si una variable es una cadena o cadena unicode con

isinstance(some_object, basestring)

Esto devolverá True para ambas cadenas y cadenas Unicode

Editar:

Podrías hacer algo como esto:

if isinstance(some_object, basestring): ... elif all(isinstance(item, basestring) for item in some_object): # check iterable for stringness of all items. Will raise TypeError if some_object is not iterable ... else: raise TypeError # or something along that line

Stringness probablemente no sea una palabra, pero espero que entiendas la idea


Verificación de tipo:

def func(arg): if not isinstance(arg, (list, tuple)): arg = [arg] # process func(''abc'') func([''abc'', ''123''])

Varargs:

def func(*arg): # process func(''abc'') func(''abc'', ''123'') func(*[''abc'', ''123''])


Verifique el tipo con isinstance (arg, basetring)


isinstance es una opción:

In [2]: isinstance("a", str) Out[2]: True In [3]: isinstance([], str) Out[3]: False In [4]: isinstance([], list) Out[4]: True In [5]: isinstance("", list) Out[5]: False


>>> type(''abc'') is str True >>> type([''abc'']) is str False

Este código es compatible con Python 2 y 3