在 python 中使用三元运算符?

Using ternary operator in python?

考虑以下代码片段。它在 break 语句处标记语法错误。

digits = list(str(102))
dummy = list(str(102/2))
for j in digits:
    dummy.remove(j) if j in dummy else break

我该如何解决这个问题?(我仍想使用三元运算符)

编辑:

(见评论中我与Stefan Pochmann的对话)

三元运算符不适用于 only 语句,而是用于赋值或表达式(并且 breakonly声明):

a = 5 if cond else 3 #OK
do() if cond else dont() #also OK
do() if cond else break #not OK

使用普通的if-else语句做语句:

if cond:
    do()
else:
    break

您不能在其中使用 break 如果您想要更简洁的解决方案,可以使用 itertools.takewhile 重新编写循环逻辑

digits = list(str(102))
dummy = list(str(102/2))

from itertools import takewhile

for d in takewhile(dummy.__contains__, digits):
    dummy.remove(d)

您还可以通过反转您的逻辑使用 for 循环消除对 else 的需要,检查 j 是否在为 True 时不在虚拟中断中:

for j in digits:
    if j not in dummy:
        break
    dummy.remove(j)

此外,如果您想从虚拟数字中删除所有出现的任何初始元素,删除不会对任何重复元素执行此操作,但在创建一组要删除的元素后使用列表组合将:

digits = str(102)
dummy = list(str(102/2))
st = set(takewhile(dummy.__contains__, digits))
dummy[:] = [d for d in dummy if d not in st]

print(dummy)

您还可以遍历一个字符串,这样就无需调用数字列表,除非您打算之后对其进行一些列表操作。