Python 查找列表中最长的偶数

Python 查找列表中最长的偶数,python,Python,假设我有一个列表,如: ['a', 'aaa', 'aa', 'aaaa'] 我想找出列表中的所有元素,如果有超过1个,则取最长的 预期的结果应该是这样的 output: ['aaaa', 4] “aa”和“aaaa”的长度相等,但“aaaa”较长,在列表中的位置为4 我确信我必须使用枚举,但我不知道如何使用python来实现这一点,因为我是mysql用户。您可以这样做: l = ['a', 'aaa', 'zz', 'aaaa'] filtered = { len(s): [s, id

假设我有一个列表,如:

['a', 'aaa', 'aa', 'aaaa']
我想找出列表中的所有元素,如果有超过1个,则取最长的

预期的结果应该是这样的

output: ['aaaa', 4]
“aa”和“aaaa”的长度相等,但“aaaa”较长,在列表中的位置为4

我确信我必须使用
枚举
,但我不知道如何使用python来实现这一点,因为我是mysql用户。

您可以这样做:

l = ['a', 'aaa', 'zz', 'aaaa']
filtered = {
  len(s): [s, idx]
  for idx, s in enumerate(l, start=1)
  if not len(s) % 2
}

filtered
{2: ['zz', 3], 4: ['aaaa', 4]}

filtered[max(filtered)]
['aaaa', 4]
说明:

首先构建一个dict,其中键是字符串长度,值是一个列表[string,position in initial list],但仅适用于偶数长度的字符串。
然后,使用max获得最大键(最长字符串长度),该值可以通过max找到的键从过滤后的dict中检索。

您需要找到偶数长度的最大长度以及与之相关的索引。您可以通过对列表中元素的长度列表进行排序,并根据长度取
max
。这将为您提供最长值的索引,然后您可以使用该索引将其引用回列表中。注意:由于python索引从0开始,因此需要添加1以获得4的“位置”:

l=['a','aaaaa','zz','aaaa']
#查找长度为偶数的最大长度的索引
m=max((ln,idx)表示idx,如果ln%2==0,则枚举中的ln([len(s)表示l中的s]))
#从该索引及其索引中获取值
输出=[l[m[1]],m[1]+1]
打印(输出)
输出:

['aaaa',4]
通过将长度与原始值进行比较,可以将其制成一个线性,尽管这比以前的代码效率低:

output=max([ln,val,idx+1]表示枚举中的idx,(ln,val)(zip([len(s)表示枚举中的s),如果ln%2==0)[1:]
还有一些方法:

output = max([len(s), s, i]
             for i, s in enumerate(a, 1)
             if not len(s) % 2
            )[1:]

欢迎来到堆栈溢出!请拿起,阅读,和,并提供一个。“为我实现此功能”是本网站的主题。你必须做一个诚实的尝试,然后问一个关于你的算法或技术的具体问题。第二个问题很有趣,但我只是讨厌使用list.index,仍然支持使用密钥=len@AnthonyPerot为什么?因为与使用dict访问相比,它在长长的列表上非常繁重key@AnthonyPerot它可能没有枚举最终丢弃的索引的lof那么重(取决于元素比较有多重)。
s = max((s for s in a if not len(s) % 2), key=len)
output = [s, a.index(s) + 1]
output = max(([s, i]
              for i, s in enumerate(a, 1)
              if not len(s) % 2),
             key=lambda x: len(x[0]))