2014-10-20 105 views
-1

我的计算机科学任务需要我用Python重新编写split()字符串方法,其中y是分隔符,而x是用户输入的字符串。Python中的Split Split()函数返回一个不正确的列表

迄今为止我所做的代码如下所示:

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

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

+0

在for循环之后,你需要检查'list_two'是否仍然包含任何东西。如果是,那么追加它。 – 2014-10-20 19:17:38

+2

没有人可以向你解释这个以及交互式可视化器。像[这一个](http://bit.ly/1vDz35J)。当你逐步了解它时,很明显为什么每个人都会出错。 (你也可以使用内置的调试器,或者添加一些'print'调用,但是当你真的需要看到每一个步骤时,可视化器会更好,并且不会因为太多而变得不堪重负) – abarnert 2014-10-20 19:18:35

回答

1

你的两个错误是:

  1. 你不处理后循环list_two;和
  2. 您正在检查单个字符,当len(y) > 1时不能正常工作 - 您应该检查字符串的起始长度为y

鉴于这是你的家庭作业,我认为你应该从那里拿走它。

+0

你打算告诉如何解决它吗? – Barmar 2014-10-20 19:21:05

+0

为什么这是我的任务?我没有问这个问题。 – Barmar 2014-10-20 19:22:08

+0

@Barmar啊,对不起,以为你是OP;这是他们的*作业 – jonrsharpe 2014-10-20 19:22:33