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

时间:2014-10-20 19:14:18

标签: python python-3.x

我的计算机科学作业要求我用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")中,返回的'b'完全没有最后一个list_one,我不知道为什么会这样。

  2. split(9*r10*r11", "*r")中,返回的list_one中有空单引号;再一次,我不知道为什么他们在那里。此外,1中发生的问题也发生在此处,列表中的数字11完全丢失。

  3. 任何人都可以向我解释为什么会发生这种情况以及如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

你的两个错误是:

  1. 循环后你没有处理list_two;和
  2. 您正在检查单个字符,这些字符在len(y) > 1时无法正常工作 - 您应该检查字符串的开头,长度为y
  3. 鉴于这是你的作业,我认为你应该从那里开始。