【问题标题】:Sorting enumerated elements in a list using another list as an order使用另一个列表作为顺序对列表中的枚举元素进行排序
【发布时间】:2023-01-29 08:08:46
【问题描述】:

我有一个主列表:

l = ['gala_apple', 'gala_lime', 'fuji_apple', 'fuji_lime']

通过一些操作,我最终得到了 l 的变体:

r = [
    'fuji_apple_1',
    'fuji_apple_2',
    'fuji_lime_1',
    'fuji_lime_2',
    'gala_apple_1',
    'gala_apple_2',
    'gala_apple_3',
    'gala_lime_1',
    'gala_lime_2',
    'gala_lime_3',
]

使用主列表 l 作为参考,我希望列表 r 的顺序如下:

r = [
    'gala_apple_1',
    'gala_lime_1',
    'gala_apple_2',
    'gala_lime_2',
    'gala_apple_3',
    'gala_lime_3',
    'fuji_apple_1',
    'fuji_lime_1',
    'fuji_apple_2',
    'fuji_lime_2',
]

IE。 (gala_apple_X, gala_lime_X, gala_apple_Y, gala_lime_Y, ...), (fuji_apple_X, fuji_lime_X, fuji_apple_Y, fuji_lime_Y, ...)

【问题讨论】:

    标签: python list sorting


    【解决方案1】:

    这可行,但要扩展到更多变量(例如gala_grapegala_pear),您需要更改 for 循环,而且通常来说,该算法效率不高。

    r2 = []
    for apple, lime in zip(l[0::2], l[1::2]):
        for i in range(len(r)):
            a_i = f'{apple}_{i}'
            if a_i in r:
                r2.extend([a_i, f'{lime}_{i}'])
    print(r2)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-24
      • 2012-08-27
      • 2011-09-10
      • 2018-05-14
      • 2019-07-30
      • 2018-01-03
      • 1970-01-01
      • 2022-11-16
      相关资源
      最近更新 更多