Python-如何将内联列表更新用作函数参数?

时间:2018-08-22 20:47:31

标签: python

我有一个列表,该列表中附加了一个值,然后使用新列表来调用函数,我想在一行中执行此操作,但是不起作用...

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:)

2 个答案:

答案 0 :(得分:2)

您可以使用:

l = ['a', 'b']
print(l + ['c'])

,它将单项列表['c']l列表连接在一起。就行为而言,将其传递给printmy_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']返回了一个列表。 或者您可以编写自己的附加函数