如何从单个元素列表中删除一个字符?

时间:2016-07-22 16:15:19

标签: list variables for-loop

这是我的代码:

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

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

1 个答案:

答案 0 :(得分: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