2024-05-16 06:47:54 发布
网友
给定一个字符串列表,比如mystr= ["State0", "State1", "State2", "State5", "State8"]。你知道吗
mystr= ["State0", "State1", "State2", "State5", "State8"]
我需要找到丢失的状态(这里是"State3", "State4", "State6", "State7")。有可能找到它吗?你知道吗
"State3", "State4", "State6", "State7"
所需输出:mylist = ["State3", "State4", "State6", "State7"]
mylist = ["State3", "State4", "State6", "State7"]
列表理解和f字符串足够简单:
mystr = ["State0", "State1", "State2", "State5", "State8"] highest = max(int(state.split('State')[-1]) for state in mystr) mylist = [f"State{i}" for i in range(highest) if f"State{i}" not in mystr] print(mylist)
Output:['State3', 'State4', 'State6', 'State7']
Output:
['State3', 'State4', 'State6', 'State7']
请注意,这个解决方案很好而且通用,即使原始列表中的最后一个元素(例如“State1024”)以及原始列表没有排序,也可以工作。你知道吗
假设列表中的最高数字可能未知,一种方法是提取每个字符串中的数字部分,将带有set.difference的range的set.difference取到最高值,然后使用列表理解创建一个新列表:
set.difference
range
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']
我不知道你在问什么。我想这就是你所期望的。你知道吗
mystr= ["State0", "State1", "State2", "State5", "State8"] print(['State'+str(p) for p in range(8) if 'State'+str(p) not in mystr ])
列表理解和f字符串足够简单:
请注意,这个解决方案很好而且通用,即使原始列表中的最后一个元素(例如“State1024”)以及原始列表没有排序,也可以工作。你知道吗
假设列表中的最高数字可能未知,一种方法是提取每个字符串中的数字部分,将带有
set.difference
的range
的set.difference
取到最高值,然后使用列表理解创建一个新列表:我不知道你在问什么。我想这就是你所期望的。你知道吗
相关问题 更多 >
编程相关推荐