Estoy confundido sobre cómo funciona el siguiente código de Python para dividir una cadena en caracteres individuales usando b[:0] = a
. ¿No debería ser solo b = ['abc']
?
a='abc'
b=[]
b[:0]=a
print(b)
Salida:
b=[a,b,c]
3 respuestas
Esto se debe a que el constructor de listas puede usarse para dividir cualquier iterables, como cadenas.
Ni siquiera necesitas [:0]
,
list(a) # ['a', 'b', 'c']
O
b = []
b[:] = a # ['a', 'b', 'c']
Aquí hay dos cosas en juego
Cuando lo haces
b[:0] = <something>
El algo se inserta al principio de la lista (esto se agrega a un segmento de la lista)
Si lo hiciste
b[1:3] = ['a', 'b', 'c']
Luego, los elementos del índice 1
y 2
se reemplazan por los elementos de la derecha
Pruebe lo siguiente:
b = []
b[:0] = [1, 2, 3]
Notarás los elementos a la derecha insertados al comienzo de la lista
Ahora cuando lo haces
b[:0] = "abc"
Dado que los elementos en el lado derecho tienen que ser una secuencia, la cadena se desempaqueta a ['a', 'b', 'c']
y luego se insertan al comienzo de la lista
De acuerdo con Python Doc siempre que el lado izquierdo de la declaración de asignación se corte , python do __setitem__
por lo que en este caso coloca elementos del lado derecho al comienzo del corte. Echale un vistazo a éste ejemplo:
>>> a = [1,2,3,4]
>>> b = [5,6,7,8]
>>> b[3:5] = a
>>> print(b)
[5, 6, 7, 1, 2, 3, 4]
Preguntas relacionadas
Preguntas vinculadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.