我有tuple
,其中包含标量和列表
(25.69, [25.5, 29.5], [0.00153, 0.0222], 0.0, [0.04109, 0.08877], [0.31393, 0.34876], [0.75, 0.63])
我需要对第一个tuple
进行操作,结果是:
((25,69, 25.5, 0.00153, 0.0, 0.04109, 0.31393, 0.75), (25.69, 29.5, 0.222, 0.0, 0.08877, 0.34876, 0.63))
第一个列表表示需要传递给函数的参数组合。我需要将其转换为tuple
两个tuples
,以便每个都可以传递给函数。
我查看了zip
,map
和itertools.izip_longest
,但每个都要求args已经拆分。
答案 0 :(得分:3)
将zip
与generator expression,conditional expression:
>>> xs = (25.69, [25.5, 29.5], [0.00153, 0.0222],
.... 0.0, [0.04109, 0.08877], [0.31393, 0.34876], [0.75, 0.63])
>>> zip(*(x if isinstance(x, list) else [x, x] for x in xs)) # list(zip(...)) in Py 3
[(25.69, 25.5, 0.00153, 0.0, 0.04109, 0.31393, 0.75),
(25.69, 29.5, 0.0222, 0.0, 0.08877, 0.34876, 0.63)]
条件表达式用于将标量值转换为列表。
x if isinstance(x, list) else [x, x]