Python 为什么mystring.split(";).append(";foo";)不返回任何内容?
我有一个存储提示符的变量,如下所示:Python 为什么mystring.split(";).append(";foo";)不返回任何内容?,python,string,list,python-3.x,Python,String,List,Python 3.x,我有一个存储提示符的变量,如下所示:(path>in>the>cli) 我想将其更新为(路径>在>cli>foo中),并附带以下内容: prompt = ">".join(prompt.replace(")","").split(">").append('foo')) + ")" 但是我有一个类型错误,因为prompt.replace(“),”).split(“>”).append('foo')returnNone 为什么它会返回None而不是['(path),,'in','th
(path>in>the>cli)
我想将其更新为(路径>在>cli>foo中)
,并附带以下内容:
prompt = ">".join(prompt.replace(")","").split(">").append('foo')) + ")"
但是我有一个类型错误,因为prompt.replace(“),”).split(“>”).append('foo')
returnNone
为什么它会返回None
而不是['(path),,'in','the','cli','foo']
?append()
修改“就地”列表并返回None
:
>>> print(prompt.replace(")","").split(">").append('foo'))
None
您需要通过+
将项目附加到列表中:
>>> ">".join(prompt.replace(")","").split(">") + ['foo']) + ")"
'(path>in>the>cli>foo)'
list.append
始终不返回任何值,也不返回列表。这是经过深思熟虑的,因为它强调append会对列表进行变异。From:
您可能已经注意到,像insert、remove或sort这样的方法
修改列表时不打印任何返回值–它们不返回任何值。
这是Python中所有可变数据结构的设计原则
因此,您需要按三行进行操作:
items = prompt.replace(")","").split(">")
items.append('foo')
prompt = '>'.join(items)
软件工程师最重要的两个开头词(用一种新的语言或全新的语言)可能是“试试看!”。当你有一个像Python这样可爱的回答时,你真的应该试一试
>>> a = []
>>> a.append(1)
>>> a
[1]
您可以将列表与+
连接在一起,如下所示:
>>> a + [1]
[1, 1]
或者您可以将列表存储在一个中间变量中,然后使用
append
将其追加到列表中,该变量实际上会将列表追加到适当的位置,并返回None
值得注意的是,+=
不会追加,它会将列表连接到给定列表的末尾。@Isaac谢谢,是的,它基本上不会修改列表in的地方,做一个新的。