Python中的My Split()函数返回了一个不正确的列表



我的计算机科学作业要求我使用来重制Python中的split()字符串方法,其中y是分隔符,x是用户输入的字符串。

到目前为止,我所做的代码如下所示:

def split(x, y = " "):
    list_one = []
    list_two = []
    for char in x:
        if char not in y:
            list_two.append(char)
        else:
            list_one.append(''.join(list_two))
            list_two = []
    return list_one

不过,在这个函数给出的输出中,我遇到了一些问题。以下是两个示例输出:

>>> split("babab", "a")
['b', 'b']
>>> split("9*r10*r11", "*r")
['9', '', '10', '']

问题是什么?

  1. split("babab", "a")中,返回的list_one中完全没有最后一个'b',我不知道为什么会这样

  2. split(9*r10*r11", "*r")中,返回的list_one中有空的单引号;再说一遍,我不知道他们为什么会在那里。此外,1中出现的问题。这里也发生了,列表中总共缺少编号11

有人能向我解释为什么会发生这种情况,以及我如何着手解决这个问题吗?

您的两个错误是:

  1. 循环后不处理list_two;以及
  2. 您正在检查单个字符,这在len(y) > 1时无法正常工作-您应该检查字符串的开头直到y的长度

既然这是你的家庭作业,我想你应该把它拿走。

相关内容

最新更新