Python 3:返回列表列表中最长的项目

jft*_*uga -5 python lambda python-3.x

如果我有这些数据:

a = [['a', 'b', 'b', 'v', 'd'], 
     ['d', 'f', 'g'], ['q', 'w', 'e', 'r', 't', 'y'], 
     ['x', '123', 'v', 'b'], ['g', 'h', 'i']]
Run Code Online (Sandbox Code Playgroud)

我想运行一个函数(最好是单行),它将返回列表列表中123具有最长字符串长度的函数.我怎样才能做到这一点?

我唯一看到的是在列表列表中找到最长的列表,所以这是一个稍微不同的问题.

Dee*_*ace 5

我想我会itertools用来展平嵌套列表然后使用内置的max:

from itertools import chain

data = [['a', 'b', 'b', 'v', 'd'],
        ['d', 'f', 'g'], ['q', 'w', 'e', 'r', 't', 'y'],
        ['x', '123', 'v', 'b'], ['g', 'h', 'i']]

print(max(chain.from_iterable(data), key=len))
# '123'
Run Code Online (Sandbox Code Playgroud)

更天真的方法是在每个列表中找到最长的字符串,然后在这些字符串之间找到最长的字符串:

print(max((max(li, key=len) for li in data), key=len))
# '123'
Run Code Online (Sandbox Code Playgroud)