创建定义的数字模式列表

时间:2014-12-21 01:11:36

标签: python list numbers

我想创建一个产生输出的列表:

[001,002,003,004,005]

并一直持续到300。将0放在数字前面是必不可少的。我尝试了一种方法,如:

a = []
for i in range(0,3):
    for j in range(0,10):
        for k in range(0,10):
            a.append(i j k)

但是,由于显而易见的原因,append函数的行为方式并不符合我的要求。

人们对我如何做到这一点有任何建议吗?

2 个答案:

答案 0 :(得分:3)

您无法生成带有填充的整数的列表,没有。您可以生成带有前导零的字符串

a = [format(i + 1, '03d') for i in range(300)]

format() function用于将整数格式化为3个字符的字段宽度,前导零填充长度,编码为03d

演示:

>>> [format(i + 1, '03d') for i in range(300)]
['001', '002', '003', '004', '005', '006', '007', '008', '009', '010', '011', '012', '013', '014', '015', '016', '017', '018', '019', '020', '021', '022', '023', '024', '025', '026', '027', '028', '029', '030', '031', '032', '033', '034', '035', '036', '037', '038', '039', '040', '041', '042', '043', '044', '045', '046', '047', '048', '049', '050', '051', '052', '053', '054', '055', '056', '057', '058', '059', '060', '061', '062', '063', '064', '065', '066', '067', '068', '069', '070', '071', '072', '073', '074', '075', '076', '077', '078', '079', '080', '081', '082', '083', '084', '085', '086', '087', '088', '089', '090', '091', '092', '093', '094', '095', '096', '097', '098', '099', '100', '101', '102', '103', '104', '105', '106', '107', '108', '109', '110', '111', '112', '113', '114', '115', '116', '117', '118', '119', '120', '121', '122', '123', '124', '125', '126', '127', '128', '129', '130', '131', '132', '133', '134', '135', '136', '137', '138', '139', '140', '141', '142', '143', '144', '145', '146', '147', '148', '149', '150', '151', '152', '153', '154', '155', '156', '157', '158', '159', '160', '161', '162', '163', '164', '165', '166', '167', '168', '169', '170', '171', '172', '173', '174', '175', '176', '177', '178', '179', '180', '181', '182', '183', '184', '185', '186', '187', '188', '189', '190', '191', '192', '193', '194', '195', '196', '197', '198', '199', '200', '201', '202', '203', '204', '205', '206', '207', '208', '209', '210', '211', '212', '213', '214', '215', '216', '217', '218', '219', '220', '221', '222', '223', '224', '225', '226', '227', '228', '229', '230', '231', '232', '233', '234', '235', '236', '237', '238', '239', '240', '241', '242', '243', '244', '245', '246', '247', '248', '249', '250', '251', '252', '253', '254', '255', '256', '257', '258', '259', '260', '261', '262', '263', '264', '265', '266', '267', '268', '269', '270', '271', '272', '273', '274', '275', '276', '277', '278', '279', '280', '281', '282', '283', '284', '285', '286', '287', '288', '289', '290', '291', '292', '293', '294', '295', '296', '297', '298', '299', '300']

答案 1 :(得分:2)

您可以继承list并重载__repr__ method以在每个号码上调用str.zfill

class NumList(list):
    def __repr__(self):
        return '[' + ', '.join([str(x).zfill(3) for x in self]) + ']'

演示:

>>> class NumList(list):
...     def __repr__(self):
...         return '[' + ', '.join([str(x).zfill(3) for x in self]) + ']'
...
>>> MyList([1, 2, 3, 4, 5])
[001, 002, 003, 004, 005]
>>>

要制作所需的确切列表,请执行NumList(range(300))

但请注意,这不会使整数具有前导零(如@MartijnPieters所说,这是不可能的)。输出仍然是一个字符串。所有这一切都告诉Python如何在将这些整数输出到控制台时显示这些整数。