Python Zfill无法正常工作

时间:2016-12-20 18:17:14

标签: python string python-2.7 range

我要做的是为10位数组合打印所有可能的组合...但是对于1我想要它打印0000000001,0000000002等。但是ZFill不起作用。我做错了什么?

a = range(0, 1000000)
print str(a).zfill(1000000)

3 个答案:

答案 0 :(得分:6)

您正在zfill对象上执行list。相反,您需要对列表的每个项目执行zfill。以下是范围10的示例示例:

>>> a = range(0, 10)

#                 v  this value represent the count of zeros
#                 v  It should be `7` in your case
>>> [str(i).zfill(10) for i in a]
['0000000000', '0000000001', '0000000002', '0000000003', '0000000004', '0000000005', '0000000006', '0000000007', '0000000008', '0000000009']

根据str.zfill() document

  

string.zfill(s,width)

     

在左侧填充数字字符串 s ,数字为零,直到达到给定的宽度。以符号开头的字符串处理正确。

答案 1 :(得分:2)

你也可以让rename()处理填充:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapMvcAttributeRoutes();

        routes.MapHttpRoute(
            name: "DefaultApiGet",
            routeTemplate: "api/{controller}/{action}",
            defaults: new { action = "Get" },
            constraints: new { httpMethod = new HttpMethodConstraint("GET") }
        );

答案 2 :(得分:0)

print str(a).zfill(7)

                  ^^

在此指定宽度。您只需执行

即可
print map(lambda x:str(x).zfill(7), range(0, 10))