创建Python元组时添加可选元素[重复]

问题描述 投票:0回答:2

我必须创建一个元素数量可变的元组(或数组)。给出这个最小的例子:

def do_something(foo: str):
    my_tuple = (
       "item",
       *([foo] if foo is not None else []),
       "something"
    )
    ...

我想知道,是否有比使用扩展运算符表达式

*([foo] if foo is not None else [])
更短的方法可以在元组中选择性地添加元素?请注意,使用 if 语句不是创建不同元组的选项。执行时间也可以忽略,优先考虑最小化代码和冗余。

python arrays tuples
2个回答
0
投票

首先允许

None
位于元组中,然后向下过滤。

def do_something(foo: str):
    my_tuple = (
       "item",
       foo,
       "something"
    )

    return tuple(filter(bool, my_tuple))

0
投票

是否有比使用扩展运算符更短的方法

*([foo] if foo is not None else [])

是的,可以按照以下方式完成

foo = "foo"
my_tuple = ("item",*[foo][:foo is not None],"something")

但更难理解。它利用了 boolean-as-integer 技巧,该技巧用于确定是否使用列表的 0 或 1 长前缀,在前一种情况下,这会导致空列表。

© www.soinside.com 2019 - 2024. All rights reserved.