Estoy tratando de agregar el carácter "<" al comienzo de cada elemento de una lista.

def names(lista):
    for i in range(len(lista)):
        lista[i]+="<"
    return lista
-2
doer76 30 oct. 2017 a las 22:22

4 respuestas

La mejor respuesta

Puede utilizar la comprensión de lista:

def names(lista):
    return ["<" + item for item in lista]

Pero eso devolverá una nueva lista, en lugar de cambiar cada elemento en la lista misma. Si, en cambio, desea cambiar los elementos de la lista, puede usar el enumerate función:

def names(lista):
    for index, item in enumerate(lista):
        lista[index] = "<" + item
    return lista

Tenga en cuenta que la declaración 'return lista' es innecesaria, ya que la lista misma ha sido mutada, lo que significa que todas las referencias a ella reflejarán los cambios.

Actualizar: Si está de acuerdo con devolver una nueva lista en lugar de mutar la 'lista' en sí, una alternativa a la comprensión de la lista es el map, aunque personalmente considero que la comprensión de la lista es más legible.

def names(lista):
    return list(map((lambda x: "<" + x), lista))
0
neveraclue 30 oct. 2017 a las 20:02

Su concatenación es al revés.

Intente reemplazar lista[i] += "<" con lista[i] = "<" + lista[i] (como se sugiere en los comentarios). Eso convierte tu código en

def names(lista):
    for i in range(len(lista)):
        lista[i] = "<" + lista[i]
    return lista
0
caird coinheringaahing 30 oct. 2017 a las 19:26

Puedes probar:

def names(lista):
   return list(map(lambda i: '<'+i, lista))

Pruebas como esta:

lista = ["a","b","c","d","e",]
lista = names(lista)
print(lista)

Te dará esto:

['<a', '<b', '<c', '<d', '<e']
0
Vasilis G. 30 oct. 2017 a las 20:00

Puede escribir

def names(lista):
    return ['<{}'.format(elem) for elem in lista]
0
progmatico 30 oct. 2017 a las 19:32