字符串是列表,但我不能使用列表方法,如追加或替换。为什么?

时间:2018-01-23 16:40:29

标签: python

我是初学者,我正试图从用户输入做回文。我以为我可以使用.replace()但是我得到一个'str'对象没有属性'append'的错误。我以为字符串是列表?那么为什么不列出方法呢?

5 个答案:

答案 0 :(得分:4)

字符串不是列表,它们是序列。它们与列表共享一些相同的行为,但它们本身并不是列表。字符串是不可变的对象。

您可以通过将字符串传递给list

将字符串转换为列表
data = list("some string")

然后,您可以对data进行操作,然后使用join将其转换回字符串:

new_string = "".join(data)

如果您只想在字符串中添加字符,可以使用连接:

new_string = "abc" + "d"

答案 1 :(得分:2)

字符串是列表中的一个独特类。正如错误所说,字符串没有append方法。

append无论如何都不会对Strings有意义,因为它们是不可变的。它们不能像列表那样进行修改。

如果你想“追加”一个角色,只需使用连接,然后重新分配字符串:

x = "String" + "s"

答案 2 :(得分:0)

为清楚起见,strlist是两种不同的数据类型。

str和列表之间的一个基本区别是列表可以是任何类型的数据,即整数,字符,字典或其他列表等,而字符串只能包含一组字符(字母数字或任何特殊字符) )。

此外,列表是可变的,字符串是不可变的!

Reference.

要了解字符串dir(str)dir(list)可以使用哪些方法会有所帮助!

答案 3 :(得分:0)

Tl;博士:strings!= lists

您可以为strings中的单个字符编制索引,就像您可以为lists中的元素编制索引一样,但可变性存在差异。

如果某些东西是可变的,它可以改变。 Lists mutable ,因此您可以更改它们的内容(添加,删除或更改元素)。

查看我确定您熟悉的一些示例:

>>> l = [1, 2, 3]
>>> l[0] = 9
>>> l.append(8)
>>> l
[9, 2, 3, 8]

另一方面,strings 不可变,因此可以更改。这意味着没有append或等效方法。但是,您可以concatenate其中两个形成 new 字符串,但这在内存方面是不同的操作(追加修改内存中的当前空间,连接分配一个全新的空间在内存中新的字符串)。

以下是strings的一些示例:

>>> s = "abcdef"
>>> s += "ghi"
>>> s
'abcdefghi'
>>> s[0] = "z"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

答案 4 :(得分:0)

您可以使用Python的type()方法来确定对象的类型:

>>> type("String")
<class 'str'>

您还可以使用list方法将字符串转换为列表:

>>> type(list("String"))
<class 'list'>