我有一份美国所有州名的列表。
states = ['Oklahoma', 'Kansas', 'North Carolina', 'Georgia', 'Oregon',
'Mississippi', 'Minnesota', 'Colorado', 'Alabama',
'Massachusetts', 'Arizona', 'Connecticut', 'Montana',
'West Virginia', 'Nebraska', 'New York', 'Nevada', 'Idaho',
'New Jersey', 'Missouri', 'South Carolina', 'Pennsylvania',
'Rhode Island', 'New Mexico', 'Alaska', 'New Hampshire',
'Tennessee', 'Washington', 'Indiana', 'Hawaii', 'Kentucky',
'Virginia', 'Ohio', 'Wisconsin', 'Maryland', 'Florida',
'Utah', 'Maine', 'California', 'Vermont', 'Arkansas', 'Wyoming',
'Louisiana', 'North Dakota', 'South Dakota', 'Texas',
'Illinois', 'Iowa', 'Michigan', 'Delaware']
我想在这个项目列表中找到最长的字符串,这很容易使用以下内容:
def longest_state(data):
return(max(states,key=len))
print(longest_state(states)
这将返回“North Carolina”,其长度为 14。但是,“South Carolina”也是 14,但未返回。
我尝试使用以下 stackoverflow 线程,它有一个示例,可以使用列表理解来查找多个最长的字符串,但我无法使其工作... Python's most efficient way to choose longest string in list?
我还尝试使用 if/else 语句将列表项附加到另一个变量,如果它等于当前最长项的长度但不成功
有人能帮忙吗?
最佳答案
您可以将所有最长的名字存储在一个数组中
def longest_state(data):
cur_longest = []
cur_longest_num = 0
for state in data:
if len(state) == cur_longest_num:
cur_longest.append(state)
elif len(state) > cur_longest_num:
cur_longest = [state]
cur_longest_num = len(state)
return cur_longest
关于python - 列表中超过 1 个最长的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52264154/