2017-06-22 93 views
-3

有什么方法可以使用任何返回变量?在Python中使用“any”返回变量?

不使用任何:

for punctuation in punctuations_list: 
    if punctuation in utterance: 
     print (punctuation) 

与任何(因为标点符号得到错误将不会被初始化):

if any(punctuation in utterance for punctuation in punctuations_list): 
    print (punctuation) 

回答

3

没有,any()只生产TrueFalse。如果您需要匹配的元素,请不要使用any(),而应使用过滤器(就像您使用for循环一样)。

你可以使用列表理解首先要做到过滤:

matching = [p for p in puntuations_list if p in utterance] 
if matching: 
    # print all matching punctuation on separate lines 
    print(*matching, sep='\n') 

,或者如果你只需要第一匹配的元素,使用next() function和发电机的表达:

matching = next((p for p in puntuations_list if p in utterance), None) 
if matching is not None: 
    print(matching) 

如果生成器表达式不生成任何值,则返回next()的第二个参数;所以这里None信号没有匹配的标点符号(因此any()将返回False)。

+0

或'下一个()',如果他们只是想在第一次出现 –

+1

@Chris_Rands:这我不清楚他们期望的是什么输出;我添加了这个选项。 –

2

没有,any()只能返回True的假,如果你需要一个变量使用filter()