如何以列表或元组的形式输入参数?

时间:2014-01-03 09:51:12

标签: python list function parameters

是否可以以列表的形式输入函数的参数。 例如 -

list1 = ["somethin","some"]
def paths(list):
    import os
    path = os.path.join() #I want to enter the parameters of this function from the list1
    return path

好的,我得到了答案,但只是一个与此相关的附加问题 - 这是我的代码 -

def files_check(file_name,sub_directories):
    """
        file_name :The file to check
        sub_directories :If the file is under any other sub directory other than the   application , this is a list.
    """
    appname = session.appname
    if sub_directories:
        path = os.path.join("applications",
                        appname,
                        *sub_directories,
                         file_name)
        return os.path.isfile(path)
    else:
         path = os.path.join("applications",
                        appname,
                        file_name)
         return os.path.isfile(path)

我收到此错误 -

 SyntaxError: only named arguments may follow *expression

请帮帮我。

3 个答案:

答案 0 :(得分:5)

您可以unpack the sequence使用splat运算符(*):

path = os.path.join(*my_list)

<强>演示:

>>> import os
>>> lis = ['foo', 'bar']
>>> os.path.join(*lis)
'foo\\bar'

<强>更新

要回答您的新问题,在参数中使用*后,您无法传递位置参数,您可以在此处执行以下操作:

from itertools import chain

def func(*args):
    print args

func(1, 2, *chain(range(5), [2]))
#(1, 2, 0, 1, 2, 3, 4, 2)

不要将list用作变量名称

答案 1 :(得分:2)

只需使用*运算符

解压缩列表
path = os.path.join(*list) 

答案 2 :(得分:1)

您可以将* -operator用于unpack the arguments

例如

data = ['a','b'] os.path.join(*data)

给予

'a/b'