【问题标题】:Convert a list of strings [ '3', '1', '2' ] to a list of sorted integers [1, 2, 3]将字符串列表 [ '3', '1', '2' ] 转换为有序整数列表 [1, 2, 3]
【发布时间】:2011-02-11 08:01:55
【问题描述】:

我有一个字符串表示的整数列表,类似于以下内容:

L1 = ['11', '10', '13', '12', 
      '15', '14',  '1',  '3', 
       '2',  '5',  '4',  '7', 
       '6', '9', '8']

我需要使它成为一个整数列表,例如:

L2 = [11, 10, 13, 12, 15, 14, 1, 3, 2, 5, 4, 7, 6, 9, 8]

最后我会像下面这样排序:

L3 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] # by L2.sort()

请告诉我从L1L3 的最佳方式是什么?

【问题讨论】:

  • @Michael Dorgan:并非所有基本问题都是家庭作业。让 OP 指出它是否是家庭作业。

标签: python string list sorting integer


【解决方案1】:
>>> L1 = ['11', '10', '13', '12', '15', '14', '1', '3', '2', '5', '4', '7', '6', '9', '8'] 
>>> L1 = [int(x) for x in L1]
>>> L1
[11, 10, 13, 12, 15, 14, 1, 3, 2, 5, 4, 7, 6, 9, 8]
>>> L1.sort()
>>> L1
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
>>> L3 = L1

【讨论】:

    【解决方案2】:

    您可以像这样一步完成:

    L3 = sorted(map(int, L1))
    

    更详细的步骤如下:

    >>> L1 = ['11', '10', '13', '12', '15', '14', '1', '3', '2', '5', '4', '7', '6', '9', '8']
    >>> L1
    ['11', '10', '13', '12', '15', '14', '1', '3', '2', '5', '4', '7', '6', '9', '8']
    >>> map(int, L1)
    [11, 10, 13, 12, 15, 14, 1, 3, 2, 5, 4, 7, 6, 9, 8]
    >>> sorted(_)
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
    >>>
    

    【讨论】:

    • 我不知道你可以这样使用下划线。那个解释器是特定的吗? +1
    • @Xavier,这只是交互式解释器中的一个小便利。
    • 是的 _ 仅在解释器中以这种方式工作。我知道在脚本中“访问”_ 的唯一方法是在列表理解中 locals()['_[1]'].__self__ 将返回正在构建的列表。
    【解决方案3】:
    L3 = sorted(int(x) for x in L1)
    

    【讨论】:

      猜你喜欢
      • 2020-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-04
      相关资源
      最近更新 更多