Función map() modifica el iterable original?
Publicado por María (2 intervenciones) el 12/02/2021 00:39:16
Hola, os agradezco la paciencia. Estoy empezando en Python y tengo una duda sobre un concepto que, en principio, me pareció muy simple. ¿Porqué la función map() en Python a veces modifica el iterable original y otras no?
Os envío un ejemplo para que entendáis lo que quiero decir. Muchas gracias de antemano :)
Os envío un ejemplo para que entendáis lo que quiero decir. Muchas gracias de antemano :)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
class Alumnado:
def __init__(self, nombre, edad):
self.nombre = nombre
self.edad = edad
def __str__(self):
return "{} de {} años".format(self.nombre, self.edad)
alumnos = [
Alumnado("Leonardo", 38),
Alumnado("Ana", 33),
Alumnado("Sabrina", 12),
Alumnado("Enrique", 23)]
#El siguiente map() incrementa la edad en 1 año
un_anio_mas = map(lambda a: a.edad + 1, alumnos)
for a in un_anio_mas:
print (a, end=" ")
"""
39 34 13 24
"""
#pero no modifica la lista original
print()
for alumno in alumnos:
print(alumno)
"""
Leonardo de 38 años
Ana de 33 años
Sabrina de 12 años
Enrique de 23 años
"""
#Pero este map() incrementa la edad en 1 año...
def incrementar(a):
a.edad += 1
return a.edad
un_anio_mas2 = map(incrementar, alumnos)
for a in un_anio_mas2:
print(a, end=" ")
"""
39 34 13 24
"""
#...y SÍ modifica la lista original.
print()
for alumno in alumnos:
print(alumno)
"""
Leonardo de 39 años
Ana de 34 años
Sabrina de 13 años
Enrique de 24 años
"""
Valora esta pregunta


0