在python中填充一系列格式化字符串的列表

时间:2012-02-14 17:51:58

标签: python list

为什么这不起作用?

[ 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

4 个答案:

答案 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不会返回任何内容,因此您无法在表达式中使用它。