如何在这里找到最长的字符串?

时间:2018-08-22 18:53:48

标签: python string list

我正在尝试使用以下代码在嵌套列表中找到最长的字符串

table_data = [['apples', 'oranges', 'cherries', 'banana'],
             ['Alice', 'Bob', 'Carol', 'David'],
             ['dogs', 'cats', 'moose', 'goose']]

cnt = [""]*3
for tab in range(len(table_data)):
    for liel in table_data[tab]:
        if len(liel) > len(cnt[tab]):
            cnt[tab]=liel
print(cnt)
# ['cherries', 'Alice', 'moose']

上面的代码返回每个列表中最长的字符串,但是我认为它的长代码是还有其他方法吗?

期望使用列表理解或函数的任何方式

致谢

2 个答案:

答案 0 :(得分:8)

  

期望使用列表理解来实现此目的

是的,列表理解是一个不错的选择。

>>> [max(row, key=len) for row in table_data]
['cherries', 'Alice', 'moose']

答案 1 :(得分:1)

获得结果的另一种方法是使用map函数,尽管这没有利用列表理解:

table_data = [['apples', 'oranges', 'cherries', 'banana'],
             ['Alice', 'Bob', 'Carol', 'David'],
             ['dogs', 'cats', 'moose', 'goose']]

output = list(map(lambda data: max(data, key=len),table_data))
print(output)

输出:

['cherries', 'Alice', 'moose']