【问题标题】:How to split the list of values in a sublist based on the first number in a element?如何根据元素中的第一个数字拆分子列表中的值列表?
【发布时间】:2020-06-25 10:05:58
【问题描述】:

我有一个看起来像这样的列表:

lines = 
['1 22698U 93041A   08176.51164820  .00000248  00000-', 
'2 22698 089.5192 046.4765 0091800 046.2114 314.6604', 
'1 22698U 93041A   08176.93361871 +.00000248 +00000121', 
'2 22698 089.5191 046.4531 0091744 044.8831 315.9716',
'1 22698U 93041A   08177.84788861  .00000094  00000-',
'2 22698 089.5188 046.4030 0091715 041.9519 318.8655']

我想将lines 拆分为 3 个子列表,例如:

sublist_1 =
 ['1 22698U 93041A   08176.51164820  .00000248  00000-', 
 '2 22698 089.5192 046.4765 0091800 046.2114 314.6604']
 sublist_2 = 
 ['1 22698U 93041A   08176.93361871 +.00000248 +00000121', 
'2 22698 089.5191 046.4531 0091744 044.8831 315.9716',]
 sublist_3 =
 ['1 22698U 93041A   08177.84788861  .00000094  00000-',
'2 22698 089.5188 046.4030 0091715 041.9519 318.8655']

拆分应该基于列表中值的第一个数字。 Like sublist 应该包含一个以 '1' 开头的序列和另一个以 '2' 开头的值

我将不胜感激有关如何管理它的任何建议。

【问题讨论】:

    标签: python-3.x list split


    【解决方案1】:

    您可以通过列表理解、枚举和列表切片来实现

    lines =['1 22698U 93041A   08176.51164820  .00000248  00000-',
    '2 22698 089.5192 046.4765 0091800 046.2114 314.6604',
    '1 22698U 93041A   08176.93361871 +.00000248 +00000121',
    '2 22698 089.5191 046.4531 0091744 044.8831 315.9716',
    '1 22698U 93041A   08177.84788861  .00000094  00000-',
    '2 22698 089.5188 046.4030 0091715 041.9519 318.8655']
    
    sublist_1, sublist_2, sublist_3 = [[v, lines[i*2+1]] for i, v in enumerate(lines[::2])]
    

    或带拉链

    sublist_1, sublist_2, sublist_3 = (list(v) for v in zip(lines[::2], lines[1::2]))
    

    【讨论】:

      【解决方案2】:

      使用 numpy.reshape()

      import numpy as np
      lines = np.array(lines)
      lines = lines.reshape(-1, 2)
      

      lines[0]、lines[1] 和 lines[2] 分别是您的子列表。

      sublist_1, sublist_2, sublist_3 = lines
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-02
        • 2020-08-21
        • 2021-11-30
        • 2021-11-11
        • 2021-04-21
        • 1970-01-01
        • 1970-01-01
        • 2020-08-28
        相关资源
        最近更新 更多