如何在python中拆分列表

Pal*_*uja 2 python list-comprehension list python-3.x

假设我有一个列表 ['x1_0','x2_1','x3_0']如何将上面的列表分成两个列表,第一个列表包含 ['x1','x2','x3']第二个列表[0,1,0]?即

         ('x1_0')
         /    \
        /      \
       /        \
     1st list   2nd list
      'x1'          0
Run Code Online (Sandbox Code Playgroud)

随意使用尽可能多的工具.这显然可以在一个for循环中完成,我知道.有一个更好的方法吗 ?.使用列表理解的东西?阿尔斯

Kas*_*mvd 6

您可以使用zip和列表理解:

>>> zip(*[i.split('_') for i in l])
[('x1', 'x2', 'x3'), ('0', '1', '0')]
Run Code Online (Sandbox Code Playgroud)

如果要将第二个元组的元素转换为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]]
Run Code Online (Sandbox Code Playgroud)

前面的方法是执行此任务的正确方法,但正如您在评论中所说,作为一个较小的解决方案,您可以使用map:

>>> l=[l[0],map(int,l[1])]
>>> l
[('x1', 'x2', 'x3'), [0, 1, 0]]
Run Code Online (Sandbox Code Playgroud)