在Python中用格式化字符串填充列表

0 投票
4 回答
2809 浏览
提问于 2025-04-17 13:01

为什么这个不管用呢?

[ 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

但是

打印("%03d" % a)
098

4 个回答

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" % _)
0
print('\n'.join(['%d03' % i for i in range(1,99)]))

print这个函数不会返回任何值,所以你不能把它放在一个表达式里使用。

5

在Python 2.x版本中,print是一个语句,所以它不能作为表达式的一部分出现。而在Python 3.x版本中,列表推导式的写法是正确的,因为print变成了一个函数,不过这样做有点没意义,因为print()总是返回None

无论如何,这才是正确的做法:

for a in range(1,99):
    print("%d03" % a)

撰写回答