python:单行三元运算符中列表元素的 if-else
python: if-else on elements of list in one line ternary operator
当我遇到以下代码时,我正在研究 python 中的推文标记化代码。请注意 tokens_re
和 emoticons_re
是正则表达式对象。由于 tokenize(s)
returns 是一个列表,因此 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]
#^ 三元运算符表达式 ^
因此 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
格式化评论:
tokens = [token if emoticon_re.search(token) else token.lower() for token in tokens]
等同于
tokens = [(token if emoticon_re.search(token) else token.lower()) for token in tokens]
当我遇到以下代码时,我正在研究 python 中的推文标记化代码。请注意 tokens_re
和 emoticons_re
是正则表达式对象。由于 tokenize(s)
returns 是一个列表,因此 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]
#^ 三元运算符表达式 ^
因此 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
格式化评论:
tokens = [token if emoticon_re.search(token) else token.lower() for token in tokens]
等同于
tokens = [(token if emoticon_re.search(token) else token.lower()) for token in tokens]