Python 列表理解:如果列表仅包含一个元素,则取消列表

Dat*_*ery 2 python list-comprehension list

我有以下功能:

output_names = [output.name for output in session.get_outputs()]
Run Code Online (Sandbox Code Playgroud)

session.get_outputs()可以返回我想从中获取名称属性的多个对象。如果列表的长度为1,我希望output_names是一个值,而不是一个只有单个值的列表。

output_names = [output.name for output in session.get_outputs()]
if len(output_names) == 1:
    output_names = output_names[0]
Run Code Online (Sandbox Code Playgroud)

我可以这样做,但这感觉像是代码味道。有没有更优雅的方法来解决这个问题?

小智 7

调整你的构建方式怎么样output_names

outputs = session.get_outputs()
output_names = [output.name for output in outputs] if len(outputs)>1 else outputs.name
Run Code Online (Sandbox Code Playgroud)

也就是说,在我看来,混合数据类型是不可取的。