Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从0000循环到9999,并将数字转换为相对字符串?_Python_String_Numbers - Fatal编程技术网

Python 如何从0000循环到9999,并将数字转换为相对字符串?

Python 如何从0000循环到9999,并将数字转换为相对字符串?,python,string,numbers,Python,String,Numbers,我想得到一些字符串,范围从0000到9999,也就是说,我想打印以下字符串: 0000 0001 0002 0003 0004 0005 0006 .... 9999 我尝试使用打印“\n”。join([str(num)表示范围(0,9999)中的num)],但失败,我得到以下数字: 0 1 2 3 4 5 6 ... 9999 我希望python自动添加前缀0,使数字始终保持4位数字。谁能帮我一把吗?非常感谢您的帮助。获得所需内容的一种方法是使用字符串格式: >>> fo

我想得到一些字符串,范围从0000到9999,也就是说,我想打印以下字符串:

0000
0001
0002
0003
0004
0005
0006
....
9999
我尝试使用
打印“\n”。join([str(num)表示范围(0,9999)中的num)]
,但失败,我得到以下数字:

0
1
2
3
4
5
6
...
9999

我希望python自动添加前缀0,使数字始终保持4位数字。谁能帮我一把吗?非常感谢您的帮助。

获得所需内容的一种方法是使用字符串格式:

>>> for i in range(10):
...     '{0:04}'.format(i)
... 
'0000'
'0001'
'0002'
'0003'
'0004'
'0005'
'0006'
'0007'
'0008'
'0009'
所以,要想做你想做的事情,请执行以下操作:

print("\n".join(['{0:04}'.format(num) for num in range(0, 10000)]))
试试这个

print"\n".join(["%#04d" % num for num in range(0, 9999)])
简单地使用:

返回长度宽度为的字符串中右对齐的字符串。衬垫 使用指定的fillchar完成(默认为ASCII空格)。这个 如果宽度小于或等于len,则返回原始字符串

返回长度为的字符串中由零填充的数值字符串 宽度。符号前缀处理正确。原始字符串是 如果宽度小于或等于len,则返回

例如:

也适用于:


print('\n'.join([str(num).zfill(4)表示范围内的num(0,10000)])
另一种方法:

["%.4d" % i for i in range(0,999)]


这应该可以实现左填充字符串的技巧:

(lambda f: f(f))(lambda f: (lambda x: (x if len(x) == 4 else f(f)('0' + x))))(str(num))
您可以尝试以下方法:

for i in range(9999):
    print(str(i).zfill(4)+"\n")

无法获取以“9999”结尾且范围为(0,9999)的序列;Python范围不包括上限。如果您想包括9999,请使用范围(10**4)。不,这不是一个完美的解决方案。这是一个重大缺陷。如果你打算使用像9999这样的大范围,那么你应该使用
xrange
来避免分配整个数字列表。做一次或两次可能没有太大的区别,但是如果这个循环在一些递归函数调用中的另一个循环中呢?Michael所说的加上remove[](使用gen exp而不是list comp)。@MichaelDillon,只有在Python 2中才是这样。在Python 3中,
range
==
xrange
xrange
是未定义的。OP使用了
范围
,所以我假设他使用的是Python 3。@yak,这也取决于具体情况。使用genex可以节省内存,但在这种情况下实际上要慢一点。无论如何,在我的机器上。@senderle:他使用的、你复制的
print
语句对Python 2来说是一个致命的赠品。
["%04d" % i for i in range(0,999)]
(lambda f: f(f))(lambda f: (lambda x: (x if len(x) == 4 else f(f)('0' + x))))(str(num))
for i in range(9999):
    print(str(i).zfill(4)+"\n")