9

我只想将一个列表(我使用 range(r) 制作的)更改为一个字符串列表,但如果字符串的长度为 1,则在前面添加一个 0。我知道如何将列表转换为字符串使用

ranger= map(str,range(r))

但我也希望能够更改这些字符串的长度。

输入:

r = 12
ranger = range(r)
ranger = magic_function(ranger)

输出:

print ranger
>>> ['00','01','02','03','04','05','06','07','08','09','10','11']

如果可能的话,我的最终目标是:我有一个形式的矩阵

numpy.array([[1,2,3],[4,5,6],[7,8,9]])

我想制作一组字符串,前两个字符是行,后两个是列,第三个是'01',并且每个字符都有矩阵[行,列]。所以上面的值看起来像这样:

000001    since matrix[0,0] = 1
000101    since matrix[0,1] = 2
000101    since matrix[0,1] = 2
000201
000201
000201
etc
4

4 回答 4

19

使用string formatting和列表理解:

>>> lst = range(11)
>>> ["{:02d}".format(x) for x in lst]
['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10']

format

>>> [format(x, '02d') for x in lst]
['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10']
于 2013-07-10T18:07:27.313 回答
14

zfill完全符合您的要求,并且不需要您像各种类型的字符串格式那样理解一种神秘的迷你语言。有一个地方,但这是一个使用现成的内置工具的简单工作。

ranger = [str(x).zfill(2) for x in range(r)]
于 2013-07-10T18:40:38.030 回答
5

这是我的看法:

>>> map('{:02}'.format, xrange(12))
['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11']

为了您自己的启发,请尝试阅读有关格式字符串语法的内容。

于 2013-07-10T18:09:31.190 回答
3

使用字符串格式:

>>> sr = []
>>> for r in range(11):
...     sr.append('%02i' % r)
... 
>>> sr
['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10']
于 2013-07-10T18:09:52.950 回答