El siguiente ejemplo muestra el error que obtengo cuando trato de usar una función de cadena dentro de una llamada a función para mapear. Necesito ayuda con por qué esto sucede. Gracias.¿Por qué no puedo usar funciones de cadena dentro de map()?
>>> s=["this is a string","python python python","split split split"]
>>> map(split,s)
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
map(split,s)
NameError: name 'split' is not defined
aunque split()
es una función incorporada, pero todavía lanza este error?
Ah! Lo tengo, 'split()' es un método relacionado con el tipo de objeto (diferente para 'string',' re', etc.) y no es una función incorporada, así que necesito especificar el tipo de objeto para eliminar la ambigüedad. –
No es para desambiguar, sino más bien porque es un método de cadena - '' blah'.split ('a') 'es equivalente a' str.split ('blah', 'a') ', lo mismo que' instanceofmyclass .mymethod (arg) 'es equivalente a' MyClass.mymethod (instanceofmyclass, arg) '- la cadena es el argumento' self' de 'str.split'. – lvc
Esto es feo. Prefiero llamar al método como un método, p. 'map (lambda x: x.split(), s)', o mejor, simplemente vaya '[x.split() para x en s]' –