将range(r)转换为python中长度为2的字符串列表

2024-06-01 21:24:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我只想将一个列表(我使用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',并且每个字符都有矩阵[row,col]。 所以上面的值看起来是这样的:

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

Tags: 字符串numpymap列表magicrangefunction矩阵
3条回答

我的看法是:

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

为了你自己的启示,试着读一下format string syntax

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

ranger = [str(x).zfill(2) for x in range(r)]

使用^{}并列出理解:

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

^{}

>>> [format(x, '02d') for x in lst]
['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10']

相关问题 更多 >