为什么这不起作用?
[ print("%d03" % a) for a in range(1,99)]
File "<stdin>", line 1
[ print("%d03" % a) for a in range(1,99)]
^
SyntaxError: invalid syntax
但
print(“%03d”%a)
098
答案 0 :(得分:5)
在Python 2.x中,print
是语句,因此它不能作为表达式的一部分出现。在Python 3.x中,列表推导在语法上是正确的,因为print
被转换为函数,虽然有点无意义,因为print()
总是返回None
。
无论如何,这是正确的方法:
for a in range(1,99):
print("%d03" % a)
答案 1 :(得分:0)
这是因为print()
是打印参数的函数,但不会返回它们。好消息是您不需要print()
进行格式化。
你(可能)正在寻找的是:
["%03d" % a for a in range(1,99)]
或使用内置函数format()
:
[format(a, "03d") for a in range(1,99)]
如果您确实想要print()
数字,那么请不要使用列表推导,而只是使用简单的for
循环:
for _ in range(99): print("%03d" % _)
答案 2 :(得分:0)
我不确定为什么你不能在列表理解中使用print,但你可以解决它:
In: print ["%03d" % a for a in range(1,10)]
['001', '002', '003', '004', '005', '006', '007', '008', '009']
答案 3 :(得分:0)
print('\n'.join(['%d03' % i for i in range(1,99)]))
print不会返回任何内容,因此您无法在表达式中使用它。