kar*_*t18 2 python ternary-operator
当我遇到以下代码时,我正在使用 python 标记化推文的代码。请注意,tokens_re
和emoticons_re
是正则表达式对象。由于tokenize(s)
返回一个列表,因此tokens
是一个列表。我对 python 有点陌生,我不确定 if-else 是否在 list 的元素上运行。提到的三元运算符没有相同的语法。
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
Run Code Online (Sandbox Code Playgroud)
三元运算符具有相同的语法:
[(token if emoticon_re.search(token) else token.lower()) for token in tokens]
#^ ternary operator expression ^
Run Code Online (Sandbox Code Playgroud)
所以,for
是不是对的一部分else
三元操作的一部分。该for
是部分列表理解本身。
三元运算符在这里用黑体写成。在 C/C++/C#/Java 中,我们会这样写:
// Java equivalent
emoticon_re.search(token) ? token : token.lower()
Run Code Online (Sandbox Code Playgroud)
所以基本上对于列表中的每个项目,它都会应用三元运算符。列表理解等价于:
# 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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1789 次 |
最近记录: |