不懂字符串算法的字符串算法

时间:2011-07-14 08:06:24

标签: python string algorithm

这是一个Python函数。它将转换为字符串中的单词列表。但我不理解算法代码的一部分:

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

我不明白,ct如何附加到列表中,因为ct =“”?如何获得价值?

感谢您的帮助!

这里是完整的功能代码:

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

3 个答案:

答案 0 :(得分:3)

else:
    ct=ct+c

这些是你忽略的线条。 如果找到空格,则ct设置为空,但在将其添加到列表后。 如果当前字符不是空格,则将字符附加到ct。 因此,当您遇到下一个空格时,您可以使用ct中的最后一个单词并将其添加到列表中。

答案 1 :(得分:2)

ct不是空字符串 - ct等于word,因为你在else子句中有ct = ct + c。

但请注意,您可以轻松修改代码以使用str.split function

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

编辑:

或者取决于你真正需要的东西(下面的示例返回与你的函数相同的结果):

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

请注意,如果需要,您可以使用strip('')删除所有前导和尾随空格。

答案 2 :(得分:1)

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