Python查找列表指定元素后从索引+2位置截取元素的方法
问题根因
报错来自切片逻辑的两处错误:
- 你直接对字符串类型的版本值
version做+2运算,Python不支持字符串和整数直接相加,因此触发类型错误。你需要偏移的是版本值对应的列表索引,不是版本值本身。 - 切片操作
list[start:]本身就会返回从start位置开始的所有元素组成的新列表,你后续遍历切片结果再把元素当索引二次取值属于多余逻辑,也会触发索引错误。
修正方案
遍历列表时用enumerate()同时获取元素索引和值,找到匹配的目标版本后,直接取versions_list[索引+2:]的切片结果即可,不需要逐元素循环追加。
修正后可运行的代码如下:
import yaml versions_list = ["0.1.0-3572c21", "0.1.0-730b9a1", "0.0.2", "0.0.1", "0.0.3"] final_list = [] found = False with open('versions.yaml', 'r') as file: catalog = yaml.safe_load(file) for idx, version in enumerate(versions_list): for item, doc in catalog.items(): for key in doc: if key['revision'] == version: found = True # 直接切片获取索引+2位置后的所有元素 final_list = versions_list[idx + 2:] break if found: break if found: break print(final_list)
针对给出的示例场景,目标元素"0.1.0-730b9a1"在列表中的索引是1,idx+2计算结果为3,versions_list[3:]返回值正好是预期的["0.0.1", "0.0.3"]。
内容的提问来源于stack exchange,提问作者jrz
相关产品推荐
相关产品推荐

