Python中更简单的流控制

Python中更简单的流控制,python,flags,flow-control,Python,Flags,Flow Control,在下面的代码中,我试图检查变量“new\u shape”是否已经存在于“shape\u list”中。如果它还不存在,我想添加它;如果它真的存在,我只想离开它。到目前为止,我只使用标志实现了这一点。我相信有一种方法可以在没有旗帜的情况下更有效地完成同样的事情。有什么建议吗? 谢谢你的帮助 flag = 0 for shape in shape_list: if new_shape == shape: flag = 1

在下面的代码中,我试图检查变量“new\u shape”是否已经存在于“shape\u list”中。如果它还不存在,我想添加它;如果它真的存在,我只想离开它。到目前为止,我只使用标志实现了这一点。我相信有一种方法可以在没有旗帜的情况下更有效地完成同样的事情。有什么建议吗? 谢谢你的帮助

    flag = 0
    for shape in shape_list:
        if new_shape == shape:
            flag = 1
            break
    if flag == 0:
        shape_list.append(new_shape)
你可以用

if new_shape not in shape_list:
    shape_list.append(new_shape)
你可以用

if new_shape not in shape_list:
    shape_list.append(new_shape)

对于保留原始流的答案(尽管通常效率低于其他答案):


对于保留原始流的答案(尽管通常效率低于其他答案):



如果订单未导入,您可能可以使用
集合
()。

如果订单未导入,您可能可以使用
集合
()。

谢谢!仍然在学习Python的诀窍,非常感谢!如果顺序不重要,您也可以使用集合而不是列表。@如果可能的话,谁使用
集合
是个好主意(@Wichert是对的)。存在性检查为(极低常数)O(1),而不是
列表
,其中存在性检查为O(N)。谢谢!我以前认为只有dicts有一个O(1)存在性检查。即使您需要订单,您仍然可以维护一个
set()
以及一个列表,并使用它进行唯一性检查。哇,谢谢!仍然在学习Python的诀窍,非常感谢!如果顺序不重要,您也可以使用集合而不是列表。@如果可能的话,谁使用
集合
是个好主意(@Wichert是对的)。存在性检查为(极低常数)O(1),而不是
列表
,其中存在性检查为O(N)。谢谢!我以前认为只有dicts有一个O(1)存在性检查。即使您需要订单,您仍然可以维护一个
set()
以及一个列表,并使用它进行唯一性检查。我不知道您可以像更改流那样更改缩进。谢谢@whodareswins:这本身并不是“改变流量”。在Python中,
if
for
while
try
都支持
else
子句;对于循环,如果循环没有中断,它就会执行。非常有用。这是唯一的“pythonic”还是在其他语言中也是唯一的?@whodareswins:我在其他语言中没有见过它,但这只意味着它很罕见,不一定是唯一的。我不知道你可以像改变流那样改变缩进。谢谢@whodareswins:这本身并不是“改变流量”。在Python中,
if
for
while
try
都支持
else
子句;对于循环,如果循环没有中断,它就会执行。非常有用。这是独特的“pythonic”还是在其他语言中也有?@whodareswins:我在其他语言中没有见过它,但这只意味着它是罕见的,不一定是独特的。