在列表中查找包含最大数字的字符串

时间:2019-04-19 17:46:20

标签: python string list

给出一个字符串列表,例如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”

5 个答案:

答案 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()