为什么 .append() 方法不适用于字符串,它们的行为不像列表吗?

2024-03-28

即使字符串实际上是字符常量列表,为什么此语句会产生错误?

string_name = ""  
string_name.append("hello word")  

我希望它能起作用的原因是,当我们使用 for 循环时,我们可以使用以下语句:

for i in string_name:  
    ...

I think string_name此处被视为列表(?)


这就是他们在算法和数据结构课程中教给你的内容,涉及算法语言(不真实的)而不是真正的编程语言,在Python中,字符串是字符串,列表是列表,它们是不同的对象,你可以使用所谓的字符串连接(基本上是字符串的加法操作)“追加”到字符串:

string_name = "hello"  
string_name = string_name + " world"
print(string_name) # => "hello world"

或者一个简写串联:

string_name = "hello"
string_name += " world"
print(string_name) # => "hello world"

列表和字符串属于这种称为iterable. iterable顾名思义,可迭代,这意味着您可以使用关键字迭代它们in,但这并不意味着它们是同一类型的对象:

for i in '123': # valid, using a string
for i in [1, 2, 3]: # valid, using a list
for i in (1, 2, 3): # valid, using a tuple
for i in 1, 2, 3: # valid, using an implicit-tuple
# all valid, all different types

我强烈建议您阅读Python 文档 https://docs.python.org/3/和/或采取Python 教程 https://docs.python.org/3/tutorial/.

来自文档术语表:

iterable
一种能够一次返回一个成员的对象。可迭代的示例包括所有序列类型(例如list, str, and tuple) 和一些非序列类型,例如dict、文件对象以及您使用 定义的任何类的对象__iter__() or __getitem__()方法。可迭代对象可以用在 for 循环以及许多其他需要序列的地方(zip(), map(), )。当可迭代对象作为参数传递给内置函数时iter(),它返回该对象的迭代器。该迭代器非常适合一次遍历一组值。使用iterables时,通常不需要调用iter()或者自己处理迭代器对象。 for 语句会自动为您执行此操作,创建一个临时的未命名变量来在循环期间保存迭代器。另请参见迭代器、序列和生成器。 更多关于可迭代对象 https://docs.python.org/3/glossary.html#term-iterable.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 .append() 方法不适用于字符串,它们的行为不像列表吗? 的相关文章

随机推荐