【问题标题】:How do I split the lists in python如何在python中拆分列表
【发布时间】:2015-02-27 10:22:23
【问题描述】:

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

         ('x1_0')
         /    \
        /      \
       /        \
     1st list   2nd list
      'x1'          0

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

【问题讨论】:

  • 什么是x1_0?变量名?
  • 我猜,x1 和 0 是他的两个列表。 @myaut

标签: python list python-3.x list-comprehension


【解决方案1】:

您可以使用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]]

【讨论】:

  • @vks 用于解压!查看链接!
  • 如何将第二个列表中的元素转换为整数。
  • @PalashAhuja 你可以使用int函数,检查编辑!
  • @Kasra 谢谢。非常感谢您的帮助。
【解决方案2】:
k=["x1_0","x2_1","x3_0"]
k1=[x.split("_")[0] for x in k]
k2=[int(x.split("_")[1]) for x in k]

你可以这样简单地做到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多