是否有可能有一个元组内?

问题描述:

我想建立这样的:是否有可能有一个元组内?

A = (
    'parlament', 
    'queen/king' if not country in ('england', 'sweden', …), 
    'press', 
    'judges' 
) 

有什么办法来建立这样一个元组?

我试图

'queen/king' if not country in ('england', 'sweden', …) else None, 
'queen/king' if not country in ('england', 'sweden', …) else tuple(), 
'queen/king' if not country in ('england', 'sweden', …) else(), 

,但没有什么工作,似乎没有成为一个元组无元素,所以我有一个3元组的英格兰,瑞典等,为身边所有国家我得到一个四元组

+1

这是不可能的元组是你想要的,如果它的参数数量不恒定。你需要一个'list',或者在第二个字段中总是有一些东西(例如'None')的四元组。如果你将解释你打算如何使用它,我们将能够给你更好的答案。 – Elazar

+1

你试过的东西似乎适用于我。什么不工作。你收到一个'SyntaxError'吗? – TerryA

+0

我可以使用'list',但是dosn't并没有解决我寻找一个“do-insert-nothing”的问题,因为这个案例 – Hoffmann

可以提出您以下

A = (('parlament',) + 
    (('queen/king',) if not country in ('england', 'sweden', …) else tuple()) + 
    ('press', 'judges')) 

这使您可以包括或不包括在结果的元组元素(不像默认值,如果你不使用元组连接,将包含这个值。

A = ('parlament', 
    'queen/king' if not country in ('england', 'sweden', …) else 'default', 
    'press', 'judges') 
+1

对于任何使用这种溶剂的人来说,注意不要忘记元组中的',',否则会吹 – Hoffmann

是的,但你需要一个else声明:

>>> country = 'australia' 
>>> A = (
... 'parlament', 
... 'queen/king' if not country in ('england', 'sweden') else 'default', 
... 'press', 
... 'judges' 
...  ) 
>>> print A 
('parlament', 'queen/king', 'press', 'judges') 

另一E xample:

>>> country = 'england' 
>>> A = (
... 'parlament', 
... 'queen/king' if not country in ('england', 'sweden') else 'default', 
... 'press', 
... 'judges' 
... ) 
>>> print A 
('parlament', 'default', 'press', 'judges') 

这是一个conditional expression,或者称为三元条件运算符。

+0

为什么downvote? – TerryA

+0

让A成为一个国家的流氓*,那么'默认'如何契合? – Hoffmann

+0

@霍夫曼这只是我编造的一串。你可以用任何你想要的东西来适应它:) – TerryA

是的,你可以,但为此,你的三元条件必须是有效的,即你也需要一个else条款。

三元运营商在python:

>>> 'x' if False else 'y' 
'y' 

您的代码:

A = (
    'parlament', 
    'queen/king' if not country in ('england', 'sweden') else 'foo', 
    'press', 
    'judges' 
    ) 
+0

我认为你实际上说*不,你不能*。但问题不明确。 – Elazar

您可以使用三元条件运算符 如:

A= ('a', 'b', 'c' if condition else 'd')