在Python中用格式化字符串填充列表
为什么这个不管用呢?
[ 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)