Esta es una función de Python. Se convierte en una lista de palabras de una cadena. Pero no entiendo el algoritmo de la parte del código:

for c in ch:
        if c==" ":
            lista.append(ct) # add to list of temporary string
            ct=""            # the ch temporary string reinicialization

No entiendo, ¿cómo puede agregar el CT a la lista, porque el CT = ""? ¿Cómo puede obtener valor?

¡Gracias por la ayuda!

Aquí el código completo de la función:

def szoLista(ch):
    "a ch karakterláncot átalakítja szavakból álló listává"
    lista, ct=[],""     # ct átmeneti string
    for c in ch:
        if c==" ":
            lista.append(ct) # a listához adjuk a ch átmenei stringet
            ct=""            # a ch átmeneti string reinicializálása
        else:
            ct=ct+c
    if ct !="":
        lista.append(ct)    # az utolsó szó hozzáadása
    return lista
0
blaces 14 jul. 2011 a las 12:06

3 respuestas

La mejor respuesta
else:
    ct=ct+c

Estas son las líneas que estás pasando por alto. ct se establece vacío cuando se encuentra un espacio, pero después de que ya se haya agregado a la lista. Si el carácter actual no es un espacio, el carácter se agrega a ct. Entonces, cuando encuentre el siguiente espacio, tiene la última palabra en ct y puede agregarla a la lista.

3
Jacob 14 jul. 2011 a las 08:10

Ct no es una cadena vacía: ct es igual a word porque tiene ct = ct + c en la cláusula else.

Sin embargo, piense que su código puede modificarse fácilmente para usar str. función dividida:

text = 'word1 word2 word3'
text.split() # ['word1', 'word2', 'word3']

Editada:

O dependiendo de lo que realmente necesita (el ejemplo a continuación devuelve el mismo resultado que su función):

text = ' word1  word2 word3 '
text.rstrip(' ').split(' ') # ['', 'word1', '', 'word2', 'word3']

Tenga en cuenta que puede usar la tira ('') para eliminar todos los espacios en blanco iniciales y finales si es necesario.

2
Artsiom Rudzenka 14 jul. 2011 a las 08:29
def szoLista(ch):
    lista, ct=[],"" #    lista for storing the result, ct for current word
    for c in ch: # read string char by char
        if c==" ": # if current char is space
            lista.append(ct) # append current word for to the resulting list
            ct=""            # clear current word (ready to constructing the next one)
        else: # if current char is any other char
            ct=ct+c # append it to current word

    # we haven't appended the last recorded word, so let's do it (if it's not empty)
    if ct !="":
        lista.append(ct)
    return lista
1
DrTyrsa 14 jul. 2011 a las 08:13