基于提取列表元素

2024-09-26 22:09:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表,如下所示:

['48638 0 Q qp32', '48708 0 Q qp32', '48736 0 Q batch', '48737 0 Q batch', '48738 588:30:5 R qp32', '48758 45:00:40 R qp32', '48763 274:19:4 R qp256', '48772 0 Q qp32', '48782 02:25:16 R qp256', '48783 0 Q qp256', '48786 0 Q qp256', '48802 05:57:29 R qp64'] 

如何根据QR等参数提取像48638这样的数字,并将输出放到一个单独的列表中?因为这是在一个完整的名单,我无法找出任何解决办法

输出必须在两个单独的列表中:

  • 如果它有Q,那么它应该打印48638, 48708, 48736, 48783, 48786
  • 如果它有R,那么它应该打印48738, 48802, 48782, 48763

Tags: 列表参数batch数字名单解决办法qp256qp32
3条回答
def get_numbers(your_list, typ):
    res = []
    for e in your_list:
        ls = e.split()
        if ls[2] == typ:
            res.append(int(ls[0]))
    return res

您可以使用in成员资格测试来查看字符是否存在,然后使用字符串拆分来提取第一个元素:

parameter = 'R' # or 'Q'
[s.partition(' ')[0] for s in yourlist if parameter in s]

这将生成字符串(so['48638', '48708', '48736', '48783', '48786'] for'Q'). If you needed *integers*, simply addint()`:

[int(s.partition(' ')[0]) for s in yourlist if parameter in s]

演示:

>>> yourlist = ['48638 0 Q qp32', '48708 0 Q qp32', '48736 0 Q batch', '48737 0 Q batch', '48738 588:30:5 R qp32', '48758 45:00:40 R qp32', '48763 274:19:4 R qp256', '48772 0 Q qp32', '48782 02:25:16 R qp256', '48783 0 Q qp256', '48786 0 Q qp256', '48802 05:57:29 R qp64'] 
>>> parameter = 'R'
>>> [s.partition(' ')[0] for s in yourlist if parameter in s]
['48738', '48758', '48763', '48782', '48802']
>>> [int(s.partition(' ')[0]) for s in yourlist if parameter in s]
[48738, 48758, 48763, 48782, 48802]
data=['48638 0 Q qp32', '48708 0 Q qp32', '48736 0 Q batch', '48737 0 Q batch', '48738 588:30:5 R qp32', '48758 45:00:40 R qp32', '48763 274:19:4 R qp256', '48772 0 Q qp32', '48782 02:25:16 R qp256', '48783 0 Q qp256', '48786 0 Q qp256', '48802 05:57:29 R qp64'] 
qs=[int(s.split(' ')[0]) for s in data if 'Q' in s]
rs=[int(s.split(' ')[0]) for s in data if 'R' in s]

相关问题 更多 >

    热门问题