我是初学者,我正试图从用户输入做回文。我以为我可以使用.replace()但是我得到一个'str'对象没有属性'append'的错误。我以为字符串是列表?那么为什么不列出方法呢?
答案 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)
为清楚起见,str
和list
是两种不同的数据类型。
str和列表之间的一个基本区别是列表可以是任何类型的数据,即整数,字符,字典或其他列表等,而字符串只能包含一组字符(字母数字或任何特殊字符) )。
此外,列表是可变的,字符串是不可变的!
要了解字符串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'>