Skip to main content
 首页 » 编程设计

python:单行三元运算符中列表元素的if-else

2025年05月04日11webabcd

当我遇到以下代码时,我正在研究用 python 对推文进行标记化的代码。请注意,tokens_re 和 emoticons_re 是正则表达式对象。由于 tokenize(s) 返回一个列表,因此 tokens 是一个列表。我是 python 的新手,我不确定 if-else 是否在列表的元素上运行。 ternary operator如前所述,没有相同的语法。

def tokenize(s): 
    return tokens_re.findall(s) 
 
def preprocess(s, lowercase=False): 
    tokens = tokenize(s) 
    if lowercase: 
        tokens = [token if emoticon_re.search(token) else token.lower() for token in tokens] 
    return tokens 

请您参考如下方法:

三元运算符具有相同的语法:

[<b>(token if emoticon_re.search(token) else token.lower())</b> for token in tokens] 
#^              ternary operator expression            ^

因此 for 不是三元运算符的 else 部分。 for 是列表理解 本身的一部分。

三元运算符在这里用粗体写成。在 C/C++/C#/Java 中,我们会这样写:

// Java equivalent 
emoticon_re.search(token) ? token : token.lower() 

所以基本上对于列表中的每个项目,它都会应用三元运算符。列表理解等同于:

# list comprehension is equivalent to: 
tmp = [] 
for token in tokens: 
    if emoticon_re.search(token): 
        tmp.append(token) 
    else: 
        tmp.append(token.lower()) 
tokens = tmp