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')
return
None

为什么它会返回
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的地方,做一个新的。