代码: 全选
flatten_diffs = lambda diffs: tuple(
chain.from_iterable(
( t
if isinstance(t[0], tuple)
else (t,))
for t in diffs))
下面這個就表明誓死不寫if-for statement的決心:
代码: 全选
swap_insert = lambda diffs: (
( diffs[t+1]
if
t != (len(diffs) - 1)
and all(
(diffs[t][0] == 0, is_not_important(diffs[t]), diffs[t+1][0] == 1))
else (
diffs[t-1]
if
t != 0
and all(
(diffs[t][0] == 1, diffs[t-1][0] == 0, is_not_important(diffs[t-1])))
else (diffs[t])))
for t in range(len(diffs)))
PEP 8裏沒講這種情況該怎麼縮進的?上面的縮進是我自己想的,求吐槽。這種複雜的conditional experssion和generator comprehension該怎麼縮進,求指點。