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

问题描述 投票:8回答:2

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

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

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

for i in string_name:  
    ...

我认为string_name被视为此处的列表(?)

string python-3.x append
2个回答
5
投票

这就是他们在算法和数据结构课程中教给您的知识,他们使用算法语言(虚幻)而不是真实的编程语言,在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 string
for i in [1, 2, 3]: # valid, using list
for i in (1, 2, 3): # valid, using tuple
for i in 1, 2, 3: # valid, using an implicit-tuple
# all valid, all different types

我强烈建议您阅读Python Documentation和/或取下Python's Tutorial

摘自文档词汇表:

可迭代一个能够一次返回其成员的对象。可迭代的示例包括所有序列类型(例如liststrtuple)和一些非序列类型,例如dict,文件对象以及使用__iter__()__getitem__()方法定义的任何类的对象。可迭代变量可用于for循环以及需要序列的其他许多地方(zip()map())。将可迭代对象作为参数传递给内置函数iter()时,它将返回对象的迭代器。此迭代器非常适合在一组值上传递一次。使用可迭代对象时,通常不必自己调用iter()或处理迭代器对象。 for语句会自动为您执行此操作,并创建一个临时的未命名变量以在循环过程中保留迭代器。另请参见迭代器,序列和生成器。有关iterables的更多信息。


-1
投票
Error is given when u try to append strings.So better first take list and then convert list to string.Code :

               n='qwerty'
               for i in range(1):
                   temp=[]
                   temp.append(n[-3:])
                   temp.append('t')
                   newtemp=' '
                   newtemp=temp[i]+temp[i+1]
                   print(newtemp)

输出:rtyt

© www.soinside.com 2019 - 2024. All rights reserved.