如何拆分 python 中的列表
How do I split the lists in python
假设我有一个列表
['x1_0','x2_1','x3_0']
如何将上面的列表拆分为两个列表,以便第一个列表包含
['x1','x2','x3']
和第二个列表 [0,1,0]
?
即
('x1_0')
/ \
/ \
/ \
1st list 2nd list
'x1' 0
随意使用尽可能多的工具。这显然可以在单个 for 循环中完成,我知道这一点。有一个更好的方法吗 ?。
使用列表理解的东西?
阿尔斯
您可以使用 zip
和列表理解:
>>> zip(*[i.split('_') for i in l])
[('x1', 'x2', 'x3'), ('0', '1', '0')]
如果您想将第二个元组的元素转换为 int,您可以使用以下嵌套列表推导式:
>>> [[int(i) if i.isdigit() else i for i in tup] for tup in zip(*[i.split('_') for i in l])]
[['x1', 'x2', 'x3'], [0, 1, 0]]
前面的方法是完成此任务的正确方法,但正如您在评论中所说的更小的解决方案,您可以使用 map
:
>>> l=[l[0],map(int,l[1])]
>>> l
[('x1', 'x2', 'x3'), [0, 1, 0]]
k=["x1_0","x2_1","x3_0"]
k1=[x.split("_")[0] for x in k]
k2=[int(x.split("_")[1]) for x in k]
你可以这样简单地做到这一点。
假设我有一个列表
['x1_0','x2_1','x3_0']
如何将上面的列表拆分为两个列表,以便第一个列表包含
['x1','x2','x3']
和第二个列表 [0,1,0]
?
即
('x1_0')
/ \
/ \
/ \
1st list 2nd list
'x1' 0
随意使用尽可能多的工具。这显然可以在单个 for 循环中完成,我知道这一点。有一个更好的方法吗 ?。 使用列表理解的东西? 阿尔斯
您可以使用 zip
和列表理解:
>>> zip(*[i.split('_') for i in l])
[('x1', 'x2', 'x3'), ('0', '1', '0')]
如果您想将第二个元组的元素转换为 int,您可以使用以下嵌套列表推导式:
>>> [[int(i) if i.isdigit() else i for i in tup] for tup in zip(*[i.split('_') for i in l])]
[['x1', 'x2', 'x3'], [0, 1, 0]]
前面的方法是完成此任务的正确方法,但正如您在评论中所说的更小的解决方案,您可以使用 map
:
>>> l=[l[0],map(int,l[1])]
>>> l
[('x1', 'x2', 'x3'), [0, 1, 0]]
k=["x1_0","x2_1","x3_0"]
k1=[x.split("_")[0] for x in k]
k2=[int(x.split("_")[1]) for x in k]
你可以这样简单地做到这一点。