在 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 语句,而是用于赋值或表达式(并且 break
是 only声明):
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)
您还可以遍历一个字符串,这样就无需调用数字列表,除非您打算之后对其进行一些列表操作。
考虑以下代码片段。它在 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 语句,而是用于赋值或表达式(并且 break
是 only声明):
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)
您还可以遍历一个字符串,这样就无需调用数字列表,除非您打算之后对其进行一些列表操作。