首页 > 解决方案 > 从给定列表中查找包含 int 值的缺失字符串

问题描述

给定一个字符串列表,比如说mystr= ["State0", "State1", "State2", "State5", "State8"]

我需要找到失踪的州(这里"State3", "State4", "State6", "State7")。有没有可能找到它?

期望的输出: mylist = ["State3", "State4", "State6", "State7"]

标签: pythonpython-3.xstringlistsorting

解决方案


假设可能不知道列表中的最大数字,一种方法是提取每个字符串中的数字部分,将set.differencearange取到最大值并使用列表推导创建一个新列表:

import re
ints = [int(re.search(r'\d+', i).group(0)) for i in mystr]
# [0, 1, 2, 5, 8]
missing = set(range(max(ints))) - set(ints)
# {3, 4, 6, 7}
[f'State{i}' for i in missing]
# ['State3', 'State4', 'State6', 'State7']

推荐阅读