给出一个字符串列表,例如str1= ["State0", "State1", "State2", "State5", "State8"]
。
我需要找到最高的州(这里是“ State8”)。我怎么找到它?
有没有比这更短的方法了
str1= ["State0", "State1", "State2", "State5", "State8"]
k=0
for n in str1:
s1 = ''.join(x for x in n if x.isdigit())
if k<int(s1):
k=int(s1)
print("State"+str(k))`
输出:“ State8”
答案 0 :(得分:3)
您可以使用内置的max
函数指定以下key
:
import re
l = ["State0", "State1", "State2", "State5", "State8"]
max(l, key=lambda x: int(re.search(r'\d+', x).group(0)))
# 'State8'
答案 1 :(得分:0)
str1= ["State0", "State1", "State2", "State15","State8","State6", "State24", "State7","State11"]
liste = list()
for i in str1:
liste.append(int(i.replace("State","")))
liste.sort()
print("State"+str(liste.pop()))
这是另一种易于理解的方式:)
答案 2 :(得分:0)
import re
str1= ["State0", "State1", "State2", "State5", "State8"]
max_1 = sorted(str1, key=lambda x: int(re.findall("\d+$",x)[0]), reverse=True)[0]
min_1 = sorted(str1, key=lambda x: int(re.findall("\d+$",x)[0]), reverse=True)[-1]
答案 3 :(得分:0)
如果async/await
中的N < 10
就足够了
StateN
否则,这应该可以解决问题
states = ['State0', 'State1', 'State2', 'State5', 'State8']
max(states)
答案 4 :(得分:0)
构造一个仅包含整数部分的值的新列表,获取该列表的max(int(s.replace('State', '')) for s in states)
,然后使用“状态”进行打印:
max()