带有多个AND运算符的IF语句

时间:2016-12-15 16:06:19

标签: python

我的代码中有以下行,效果很好,但看起来很难看。

if not line.startswith("<ul>") and not line.startswith("<ol>") and not line.startswith("<li>"):

有没有更好的方法来写这条线?

由于

4 个答案:

答案 0 :(得分:3)

使用正则表达式

import re

if not re.match("^<ol>|^<ul>|^<li>", line):

答案 1 :(得分:2)

您可以将any与列表推导或生成器结合使用:

if not any(line.startswith(tag) for tag in ['<ul>', '<ol>', '<li>']):

答案 2 :(得分:0)

使用any()如果iterable的任何元素为true,则返回True。如果iterable为空,则返回False。

if not any(line.startswith(x) for x in ["<ul>", "<ol>", "<li>"]):

答案 3 :(得分:0)

不用说,有多种方法可以做到这一点(就像编码中的任何东西一样)。但是,如果您打算以后再使用这些标签,另一种方法是创建一个包含这些标签的列表,然后在需要时引用该列表。 即

tags = ["<ul>", "<ol>", "<li>"]
#your code here
if line.startswith not in tags:
    #your code here