Python - 删除字符串中的一个字母

时间:2017-12-04 22:09:12

标签: python-3.x list

我想从字符串列表中删除变量(这是一个字符串)。所以基本上:

list = ["A", "G", "T", "C"]
number = 2
newlist = ["A", "G", "T", "C"] - list[number]

然后应该给出:

newlist = ["A", "G", "C"]

但是当我尝试这个时它会给我这个错误信息:

Traceback (most recent call last):
  File "mini.py", line 3, in <module>
    newlist = ["A", "G", "T", "C"] - list[number]
TypeError: unsupported operand type(s) for -: 'list' and 'str'

我该如何解决这个问题?

提前致谢!

1 个答案:

答案 0 :(得分:1)

有几种方法可以做你想做的事。

如果要修改起始列表(而不是创建新列表),可以使用del语句删除所需的索引:

del oldlist[index]

如果您需要引用正在删除的值(并且尚未删除),则可以在列表中调用pop

value_removed = oldlist.pop(index)

如果要保留旧列表,则需要复制列表的数据,以便能够在不更改原始列表的情况下删除该值。一种方法是复制整个列表,然后在副本中的索引上使用del

newlist = oldlist.copy() # or list(oldlist) or oldlist[:]
del newlist[index]

另一种选择是使用切片来获取索引之前的列表部分,以及索引之后的部分,然后将它们连接在一起。这看起来像这样:

newlist = oldlist[:index]
newlist.extend(oldlist[index + 1:])

您可以使用+运算符在一行中执行后一版本以合并两个切片,但使用两行并调用extend可避免第一片值的不必要的额外副本。 / p>

请注意,除非index始终接近列表末尾,否则所有这些方法都需要O(len(oldlist))时间才能完成,所以不要经常这么做列表,如果你关心表现。

在我的所有示例中,我都使用oldlist作为现有列表的名称。我强烈建议您避免在代码中使用list作为变量名,因为它会掩盖内置list类型。这通常不会立即成为问题(特别是如果list变量是函数中的局部变量),但如果稍后编辑代码并且不记得{{1},则可能会导致非常混乱的错误在那个特定的地方是一个局部变量。