3

I'd like to build something like:

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

Is there any way to build a tuple like that?

I tried

'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 (),

but nothing is working, there doesn't seem to be an tuple-None-element, so I have a 3-tuple for all countries beside England, Sweden, etc. for which I get a 4-tuple

4

5 に答える 5

8

elseはい。ただし、ステートメントが必要です。

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

もう一つの例:

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

これは条件式であり、三項条件演算子とも呼ばれます。

于 2013-06-12T08:48:07.820 に答える
5

フォローすることを提案できます

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')
于 2013-06-12T08:49:25.830 に答える
1

はい、できますが、そのためには、三項条件が有効なものでなければなりません。つまり、else句も必要です。

Python の三項演算子:

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

あなたのコード:

A = (
  'parlament',
  'queen/king' if not country in ('england', 'sweden') else 'foo',
  'press',
  'judges'
   )
于 2013-06-12T08:48:32.523 に答える
0

三項条件演算子を使用できます。例:

A= ('a', 'b', 'c' if condition else 'd')
于 2013-06-12T08:55:58.207 に答える