8

我是 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()首先使用字符串,但我不知道如何将新列表中的字符串转换为列表以便我获得正确的输出。

4

2 回答 2

22
>>> 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]]
于 2012-08-10T05:06:37.633 回答
2
>>> 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 use list(map(int,x.split(','))), asmap()在 python 3.x 中返回一个地图对象

于 2012-08-10T05:17:58.043 回答