有没有办法将这个 try/except 简化为带有 lambda 的一行?
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 简化为带有 lambda 的一行?
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 ""
最后,关于命名法的一点小注:i
传统上用于表示“索引”,因此使用for i, j in enumerate(…)
会更“正常”。