【问题标题】:How to extract multiple strings from list spaced apart如何从间隔开的列表中提取多个字符串
【发布时间】:2022-11-26 20:27:20
【问题描述】:

我有以下列表:

lst = ['L38A', '38', 'L', 'A', '-6.7742', '-3.5671', '0.00226028', '0.4888', 'L38C', '38', 'L', 'C', '-7.7904', '-6.6306', '0.0', '0.4888', 'L38D', '38', 'L', 'D', '-6.3475', '-3.0068', '0.00398551', '0.4888', 'L38E', '38', 'L', 'E', '-6.4752', '-3.4645', '0.00250913', '0.4888']

我希望多次提取列表 ('L38A') 中的第一个元素(位置 0)和第五个元素(位置 4)(-6.7742):

期望的输出 [('L38A','-6.7742'), ('L38C','-7.7904'), ('L38D','-6.3475')...('L38E','-6.4752')]

我努力了: lst[::5]

【问题讨论】:

  • 差不多好了 :) ;尝试 lst[::4]

标签: python list


【解决方案1】:

这有效:

a=[(x,y) for x,y in zip(*[iter(lst[::4])]*2)]

print(a)

# [('L38A', '-6.7742'), ('L38C', '-7.7904'), ('L38D', '-6.3475'), ('L38E', '-6.4752')]

【讨论】:

    【解决方案2】:

    我们可以通过 zip 操作和列表理解来处理这个问题:

    lst = ['L38A', '38', 'L', 'A', '-6.7742', '-3.5671', '0.00226028', '0.4888', 'L38C', '38', 'L', 'C', '-7.7904', '-6.6306', '0.0', '0.4888', 'L38D', '38', 'L', 'D', '-6.3475', '-3.0068', '0.00398551', '0.4888', 'L38E', '38', 'L', 'E', '-6.4752', '-3.4645', '0.00250913', '0.4888']
    it = [iter(lst)] * 8
    output = [(x[0], x[4]) for x in zip(*it)]
    print(output)
    

    这打印:

    [('L38A', '-6.7742'), ('L38C', '-7.7904'), ('L38D', '-6.3475'), ('L38E', '-6.4752')]
    

    第一个zip 生成一个包含 8 个元组的列表,其中 8 是每个循环中值的数量。然后,理解生成一个包含第一个和第五个元素的二元组列表。

    【讨论】:

    • 我也喜欢你的 :) 我们实际上使用了完全相同的“magic iter trick”,只是不在同一个 iterable 上!
    猜你喜欢
    • 2018-07-21
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    • 2018-12-06
    • 2021-01-09
    • 1970-01-01
    相关资源
    最近更新 更多