使用"任何"返回变量在python?

时间:2017-06-22 09:48:00

标签: python return return-value

有没有办法使用any?

返回变量

不使用Any:

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

使用Any(因为标点符号未初始化而出现错误):

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

2 个答案:

答案 0 :(得分: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)。

答案 1 :(得分:2)

不,any()只能返回True of False,如果需要使用变量filter()