我有一个列表,该列表中附加了一个值,然后使用新列表来调用函数,我想在一行中执行此操作,但是不起作用...
list = ['a', 'b']
my_funtion(list.append('c'))
my_function 收到一个None而不是带有三个字母的列表,这是正确的,因为来自doc:
def append(self, p_object): """ L.append(object) -> None -- append object to end """ pass
如果我这样做,它会起作用:
list = ['a', 'b']
list.append('c')
my_funtion(list)
我想知道是否可以用原始样本简化代码?顺便说一句,我来自Java,也许我的代码不是pythonic:)
答案 0 :(得分:2)
您可以使用:
l = ['a', 'b']
print(l + ['c'])
,它将单项列表['c']
与l
列表连接在一起。就行为而言,将其传递给print
与my_function
相同。
上面代码的输出也是如此,列表在my_function
中也是如此:
['a', 'b', 'c']
请注意,在原始示例中,当您调用变量list
时,您已经重新定义了内部函数list()
,该函数将可迭代对象转换为列表,因此在选择变量时请务必谨慎名称。
答案 1 :(得分:0)
在python中,自变量定义为调用函数时提供给函数的值。 type(list.append())
返回Nonetype。这在线程What is a 'NoneType' object?中进行了解释。据我所知,python中没有内置的list方法返回修改后的列表。总之,@ ggorlen的回答可能是最好的,因为l + ['c']
返回了一个列表。
或者您可以编写自己的附加函数