Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在列表中使用元组解包创建对象_Python_Python 3.x_List Comprehension - Fatal编程技术网

Python 在列表中使用元组解包创建对象

Python 在列表中使用元组解包创建对象,python,python-3.x,list-comprehension,Python,Python 3.x,List Comprehension,我很好奇我是否能解包一个从函数返回的元组,并使用解包后的值创建一个对象,所有这些都在一个列表中 我希望使用的代码如下所示: data = [ Availability( user=random.randrange(100), start_time, end_time=generateTimes(), ) for x in range(10000) ] 上面的代码给出了错误SyntaxError:positional参数跟在关键字参数之后。

我很好奇我是否能解包一个从函数返回的元组,并使用解包后的值创建一个对象,所有这些都在一个列表中

我希望使用的代码如下所示:

data = [
    Availability(
        user=random.randrange(100),
        start_time, end_time=generateTimes(),
    )
    for x in range(10000)
]

上面的代码给出了错误
SyntaxError:positional参数跟在关键字参数之后
。如果可能的话,我更喜欢使用列表理解而不是传统的for循环

start\u time,end\u time=generateTimes()

这不会解压缩返回值。这会将变量
start\u time
作为位置参数传递(可能未定义)(这就是为什么会得到
SyntaxError
),并将
generateTimes()中的两个返回值作为关键字参数传递。这不可能像你那样,你唯一的希望是:
如果您有如下定义的
可用性
构造函数:

def\uuuu init\uuuu(self,user=0,start\u time=0,end\u time=1)
您可以省略关键字并像传递位置参数一样传递参数

可用性(
随机。随机范围(100),
*生成时间()
)
但是,如果可用性类构造函数的关键字参数超过这三个,那么这很可能不起作用。然后,您必须像这样调用函数两次:

可用性(
随机。随机范围(100),
开始时间=生成时间()[0],
结束时间=生成时间[1]
)
编辑 我使用
map()
找到了另一个解决方案(未经测试):

数据=[
可用性(
用户=随机。随机范围(100),
开始时间=开始时间,结束时间=结束时间
)
对于开始时间,映射中的结束时间(lambda:generateTimes(),范围(10000))
]

我更新了帖子以澄清出现的错误。“SyntaxError:位置参数跟随关键字参数”与列表理解无关,您需要在关键字参数之前传递所有位置参数。谢谢。可用性(random.randrange(100),*generateTimes())最终解决了这个问题。@Bonteq然后请使用左边的灰色复选标记接受答案。据我所知,答案是肯定的。@Bonteq嘿,再看看我的答案,我找到了更好的解决方案@Bonteq Woopsie现在应该可以工作了