重複の可能性:
単純な if-then ステートメントを 1 行に入れる
私は Python 式に取り組んでおり、その式を if else ステートメントを使用するよりも圧縮したいと考えています。
s = [1, 2, 3, 4]
if len(s)>5:
print s.index(5)
else:
print 'cant print'
as if else ステートメントを使用するよりも良い方法はありますか?
重複の可能性:
単純な if-then ステートメントを 1 行に入れる
私は Python 式に取り組んでおり、その式を if else ステートメントを使用するよりも圧縮したいと考えています。
s = [1, 2, 3, 4]
if len(s)>5:
print s.index(5)
else:
print 'cant print'
as if else ステートメントを使用するよりも良い方法はありますか?
できるよ:
s = [1, 2, 3, 4]
print 'y' if len(s) > 5 else 'n'
ただし、これによりコードが読みやすくなるとは思いません (一目で)。また、ループを作成if
しelse
ないでください。これらは単なる制御フローのステートメントです。ループは and を使用して記述されfor
ますwhile
。
短いですが、非常に難読化されています (これを行わないでください):
print 'ny'[len(s) > 5]
[編集] 決してこれを行うべきではない理由は、ほとんどの人にはほとんど知られていない言語のプロパティを使用するためです。つまり、bool は int のサブクラスです。OP のようなコードを記述しているほとんどの状況では、通常、フラグ変数を作成することをお勧めします。
s_is_long = len(s) > 5
次に、より適切な方法で印刷を作成できます。たとえば、次のようになります。
print 'y' if s_is_long else 'n'
また
print {True: 'y', False: 'n'}[s_is_long]
またはすべての中で最も読みやすい...
if s_is_long:
print 'y'
else:
print 'n'
この場合、try/except ブロックを使用できます。
try:
print s.index(5)
except ValueError:
print "5 not in list"
簡潔明瞭:
s = [1, 2, 3, 4]
output = {True: 'y',False: 'n'}
print output[len(s) > 5]
別のバリエーション:
print len(s)>5 and 'y' or 'n'
完全を期すために追加しただけです。家でこれを試さないでください!;-)