2016-07-22 35 views
1

这里是我的代码:如何从单个元素列表中移除一个字符?

def reverse(text): 
    intermediate = [] 
    opposite = [] 
    intermediate.append(text) 
    size = len(intermediate) 
    while len(intermediate) > 0: 
     opposite.append(intermediate[-1]) 
     intermediate[:-1] ` <--- 
    return opposite 

的箭头标记线是我尝试删除在中间列表中的最后一个字符。有些东西似乎不起作用...

回答

0

在python中,字符串是不可变的。你将不得不设置修剪字符串返回到原始字符串:

intermediate = intermediate[:-1] 

而且,请注意,当您返回opposite,它不会是一个字符串,这将是字符的列表。你可以将其转换为字符串,像这样:

return ''.join(opposite) 

编辑:

好了,所以在观看你的代码,你有超过一个语法错误更多:

def reverse(text): 
    intermediate = [] 
    opposite = [] 
    intermediate.append(text) # <-- this line makes intermediate a list with one element: ['input_text'] 
          # you want intermediate = str(text) (cast it to make a copy) 
          # as it is, you will just pass this string from one list to another, and return 
    size = len(intermediate) # you don't need this 
    while len(intermediate) > 0: 
     opposite.append(intermediate[-1]) 
     intermediate[:-1]  # your string immutability problem 
    return opposite   # your list/string confusion 

所以一起,你想要的东西,如:

def reverse(text): 
    opposite = [] 
    intermediate = str(text) 
    while len(intermediate) > 0: 
     opposite.append(intermediate[-1]) 
     intermediate = intermediate[:-1] 
    return ''.join(opposite) 

编辑2:此外,为了避免这样的困惑,我会坚持到只有串或仅列出,在这种情况下,没有必要列出所有:

def reverse(text): 
    opposite = '' 
    intermediate = str(text) 
    while len(intermediate) > 0: 
     opposite += intermediate[-1] 
     intermediate = intermediate[:-1] 
    return opposite 
+0

谢谢。一旦我设置中间=中间[: - 1]还有什么我必须做的?当我运行代码时,(返回相反)它不会返回输入文本的相反部分。 – user8669

+0

不,只要你想要做的就是把'intermediate'的最后一个字母追加到'opposite',然后将它从'intermediate'中移除,这就是你应该需要的。 OTOH,如果你想要做的只是反转一个字符串,你可以执行'reverse_string = forward_string [:: - 1]'http://stackoverflow.com/documentation/python/289/indexing-and-slicing#t=201607221640437443544在这里看到更多关于切片。 – Will

+0

我正在处理不允许使用反转或[:: - 1]功能的作业。是否有我的代码没有扭转字符串的原因? – user8669

相关问题