このtry/exceptをラムダで1行に単純化する方法はありますか?
alist = ['foo','bar','duh']
for j,i in enumerate(alist):
try:
iplus1 = i+alist[j+1]
except IndexError:
iplus1 = ""
次の方法以外に方法はありますか。
j = '' if IndexError else trg[pos]
このtry/exceptをラムダで1行に単純化する方法はありますか?
alist = ['foo','bar','duh']
for j,i in enumerate(alist):
try:
iplus1 = i+alist[j+1]
except IndexError:
iplus1 = ""
次の方法以外に方法はありますか。
j = '' if IndexError else trg[pos]
try
いいえ、Pythonには/except
構文の省略形や簡略化はありません。
あなたの特定の問題を解決するために、私はおそらく次のようなものを使用します:
for j, i in enumerate(alist[:-1]):
iplus1 = i + alist[j + 1]
これにより、例外の必要がなくなります。
または、超クールで一般的なものを入手するには:
from itertools import islice
for j, i in enumerate(islice(alist, -1)):
iplus1 = i + alist[j + 1]
別の方法として、次のように使用できますitertools.iziplongest
。
for i, x in itertools.izip_longest(alist, alist[1:], fillvalue=None):
iplus1 = i + x if x is not None else ""
最後に、命名法に関する1つの小さな注意:i
伝統的に「インデックス」を意味するために使用for i, j in enumerate(…)
されるため、使用する方が「通常」になります。