【问题标题】:Python: string to a list of listsPython:字符串到列表列表
【发布时间】:2012-08-07 09:47:05
【问题描述】:

我是 python 新手,对将字符串转换为列表感到困惑。我不确定如何在列表中创建列表以完成以下操作:

例如。

string = '2,4,6,8|10,12,14,16|18,20,22,24' 

我正在尝试使用 split() 创建一个数据结构 my_data,以便在我输入时

print my_data[1][2] #it should return 14

卡住了: 这是我一开始做的:

new_list = string.split('|')  #['2,4,6,8', '10,12,14,16,', '18,20,22,24']

而且我知道您不能拆分列表,所以我首先split() 字符串,但我不知道如何将新列表中的字符串转换为列表以便我获得正确的输出。

【问题讨论】:

  • 你不能.split一个列表,但你可以拆分列表中的字符串,这就是我所做的
  • +1 对于这样一个写得很好的问题!实际上,您尝试解决了您的问题,发布了您尝试过的内容,然后就下一步该去哪里寻求具体帮助 - 太棒了!

标签: python string list split


【解决方案1】:
>>> strs = '2,4,6,8|10,12,14,16|18,20,22,24'
>>> strs1=strs.split('|')
>>> [map(int,x.split(',')) for x in strs1] 
[[2, 4, 6, 8], [10, 12, 14, 16], [18, 20, 22, 24]]

注意:对于python 3.x 使用list(map(int,x.split(','))),因为map() 在python 3.x 中返回一个地图对象

【讨论】:

    【解决方案2】:
    >>> text = '2,4,6,8|10,12,14,16|18,20,22,24'
    >>> my_data = [x.split(',') for x in text.split('|')]
    >>> my_data
    [['2', '4', '6', '8'], ['10', '12', '14', '16'], ['18', '20', '22', '24']]
    >>> print my_data[1][2]
    14
    

    也许您还想将每个数字(仍然是字符串)转换为int,在这种情况下我会这样做:

    >>> [[int(y) for y in x.split(',')] for x in text.split('|')]
    [[2, 4, 6, 8], [10, 12, 14, 16], [18, 20, 22, 24]]
    

    【讨论】:

    • 非常感谢!!!我喜欢你这样做的第一种方式。我不想将每个数字转换为 int,但我明白为什么要这样做。
    猜你喜欢
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多