[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真的是一个混淆未来的代码维护者(包括你)的黑客.
总结以上是内存溢出为你收集整理的在python列表理解中调用print全部内容,希望文章能够帮你解决在python列表理解中调用print所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)