Python如何获取列表中指定字符串元素之后的全部内容
Python获取列表指定元素之后所有内容的实现方法
现有待处理的Python列表如下:
a = ['$jas00051157$V0.20.30', '02-07-2021$debug.20210712_2327.24S_2481664$40$509b3bb3$jas1A8B7F7', '4889718:L]', '71001', '319', '187', '2', '2', '1', '4/49', '10/154', '16/106', '17/134', '18/244', '19/135', '20/139', '21/82', '22/344', '23/65', '26/190', '28/201', '29/224', '30/404', '31/223', '32/228', '33/201', 'L0', '199/208/204', 'L1', '211/216/213', '216/217/216', 'L2']
基础实现(匹配第一个出现的指定元素)
核心逻辑是先通过列表的index()方法获取指定元素的下标,再通过列表切片截取该位置之后的所有内容,代码如下:
# 定位'71001'的下标 target_idx = a.index('71001') # 从下标+1的位置截取到列表末尾 res = a[target_idx + 1:] print(res)
运行后输出结果和需求完全一致:
['319', '187', '2', '2', '1', '4/49', '10/154', '16/106', '17/134', '18/244', '19/135', '20/139', '21/82', '22/344', '23/65', '26/190', '28/201', '29/224', '30/404', '31/223', '32/228', '33/201', 'L0', '199/208/204', 'L1', '211/216/213', '216/217/216', 'L2']
异常兼容处理
如果列表中可能不存在'71001'这个元素,为了避免index()抛出ValueError异常,可以提前做判断:
if '71001' in a: target_idx = a.index('71001') res = a[target_idx + 1:] else: # 可自定义元素不存在时的返回逻辑,这里示例返回空列表 res = []
扩展场景:匹配最后一个出现的指定元素
如果列表中存在多个'71001',需要取最后一次出现的该元素之后的内容,可以翻转列表后定位下标再换算:
if '71001' in a: # 翻转列表找第一个出现的位置,换算为原列表最后一次出现的下标 last_target_idx = len(a) - 1 - a[::-1].index('71001') res = a[last_target_idx + 1:] else: res = []
内容的提问来源于stack exchange,提问作者SJJ
相关产品推荐
相关产品推荐

