Pregunta ¿Cómo divide (cadena) la cadena a una matriz de caracteres en python?


a = "Stack"
aList = list(a)

Esto me da una matriz como esta ['S','t',a','c','k']

Quiero saber como esta list(string) funciona la funcion!


5
2018-02-26 02:36


origen


Respuestas:


Una cadena es un tipo iterable. Por ejemplo, si haces esto:

for c in 'string':
    print c

Usted obtiene

s
t
r
i
n
g

Así que pasando una cadena a list solo itera sobre los caracteres en la cadena, y coloca cada uno en la lista.


7
2018-02-26 02:39



La cadena es iterable en Python porque puedes hacer

>>> for ch in "abc":
...         print ch
...
a
b
c
>>>

y si miras a list clase construtor utilizando help("list") en tu intérprete de python

class list(object)
 |  list() -> new empty list
 |  list(iterable) -> new list initialized from iterable's items

Asi que, list("hello") devuelve una nueva lista inicializada.

>>> x = list("hello")
>>> type(x)
<type 'list'>
>>>

4
2018-02-26 02:51



Esto funciona porque str implementos __iter__, Que permite iter(obj) ser llamado sobre el objeto. por str, la implementación devuelve carácter por carácter.


0
2018-02-26 02:58



La mayor parte del trabajo en realidad está siendo realizado por la cadena. En realidad estás usando el constructor de list tipo. En Python, generalmente no estamos tan preocupados por lo que son las cosas, sino por lo que pueden hacer.

Lo que una cadena puede hacer es darle (por ejemplo, para usar un bucle for) sus caracteres (en realidad, subcadenas de longitud-1, no hay un tipo de carácter separado) de a uno por vez. los list el constructor espera cualquier objeto que pueda hacer esto, y construye una lista que contiene los elementos así proporcionados.


0
2018-02-26 05:05