在python列表理解中调用print
发布时间:2020-12-20 12:22:15 所属栏目:Python 来源:网络整理
导读:所以我试图推出一个我在这个网站上真正第一次听到的技巧. [i for i in range(0,10) if True or print(i)] 这个想法是你可以在listcomp的每一步调用一个任意函数,方法是将它放在一个总是返回True的“if”语句中.但该代码给出了语法错误. 如果我包装我想要这样
所以我试图推出一个我在这个网站上真正第一次听到的技巧.
[i for i in range(0,10) if True or print(i)] 这个想法是你可以在listcomp的每一步调用一个任意函数,方法是将它放在一个总是返回True的“if”语句中.但该代码给出了语法错误. 如果我包装我想要这样调用的函数,但是: def f(i): print i [i for i in range(0,10) if True or f(i)] 它产生所需的输出.所以我想知道,在Python的脑海中,两者之间有什么不同,因为我不知道它可能是什么 – 两个函数都返回“None”,对吧? 解决方法
您不能将语句(如Python 2中的print)与列表推导混合使用.
但是,您可以通过添加以下内容使print()成为一个函数: from __future__ import print_function 在您的文件的顶部.这将print()转换为整个模??块的功能. 但是,您正在使用True或其他语句,并且永远不会评估’某事’,因为Python布尔表达式会短路.你想转过来: if print(something) or True 如果左侧已经评估为True,那么评估一个或表达式的右侧是没有意义的;没有任何右侧可以提出的将使整个表达方式变得虚假,永远. 你真的想在列表理解中避免这种副作用.使用正确的循环并将这些惊喜从代码中删除,如果某些东西或True真的是一个混淆未来的代码维护者(包括你)的黑客. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |