【问题标题】:Convert range(r) to list of strings of length 2 in python将范围(r)转换为python中长度为2的字符串列表
【发布时间】:2013-07-10 18:05:49
【问题描述】:

我只想将一个列表(我使用 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

【问题讨论】:

    标签: python string list range


    【解决方案1】:

    使用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']
    

    【讨论】:

    • 第二个例子很好地使用了 format() 内置函数
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      这是我的看法:

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

      为了您自己的启迪,请尝试阅读format string syntax

      【讨论】:

        【解决方案4】:

        使用字符串格式:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-04-08
          • 2015-07-03
          • 2018-01-19
          • 1970-01-01
          • 2011-09-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多