带列表的三元运算符

Ternary operator with lists

我在 Python 中有一个字符串列表,其中一些字符串以字符 - 开头,我想删除这样的字符.

我试过这句话:

columns = [column[1:] for column in columns if column.startswith('-') else column]

但是我得到一个 Sintax Error 异常。

正确的做法是什么?

您希望三元运算符的结果是列表中的结果,所以它都在左边:

columns = [column[1:] if column.startswith('-') else column for column in columns]

您可以使用 if after for .. in ... 将项目完全过滤出迭代,但 else 没有任何意义那个上下文,这就是为什么你得到 SyntaxError.