2014-03-29 54 views

回答

4

append()修改 “就地” 列表并返回None

>>> print(prompt.replace(")","").split(">").append('foo')) 
None 

你需要通过+追加的项目清单:

>>> ">".join(prompt.replace(")","").split(">") + ['foo']) + ")" 
'(path>in>the>cli>foo)' 
+1

值得注意的是'+ ='不会追加,它将列表连接到给定列表的末尾。 – Isaac

+0

@Isaac谢谢,是的,它基本上不会修改列表到位,做出一个新的。 – alecxe

3

list.append总是返回None,而不是列表。这是故意的,因为它强调append改变列表。从the docs

您可能已经注意到,像插入方法,删除或那种 修改列表都没有返回值,印刷 - 他们返回None。 这是Python中所有可变数据结构的设计原则。

所以,你需要做的是三行:

items = prompt.replace(")","").split(">") 
items.append('foo') 
prompt = '>'.join(items) 
1

的一个最重要的两个词的开头(在一个新的语言或新的干脆!)软件工程师很可能是“尝试它!”。当你有像Python这样可爱的REPLy类时,你应该试试看。

>>> a = [] 
>>> a.append(1) 
>>> a 
[1] 

您可以连接一个列表,在地方,+,就像这样:

>>> a + [1] 
[1, 1] 

或者你可以将列表存储在一个中间变量,然后追加到它与append,这实际追加到列表中,并返回None

+0

尝试使用+1 –

相关问题