Python 如何获取嵌套字符串列表中最长字符串的长度?

Python 如何获取嵌套字符串列表中最长字符串的长度?,python,python-3.x,string-length,Python,Python 3.x,String Length,这里是Python新手。我试图在一系列嵌套列表中查找值的最长长度。下面是一个示例列表类型: tableData = [['apples', 'oranges', 'cherries', 'banana'], ['Alice', 'Bob', 'Carol', 'David'], ['dogs', 'cats', 'moose', 'goose']] 这里我想要的答案是8,但是如果列表更新,这可能会改变 当我使用print(len(tableD

这里是Python新手。我试图在一系列嵌套列表中查找值的最长长度。下面是一个示例列表类型:

tableData = [['apples', 'oranges', 'cherries', 'banana'],
             ['Alice', 'Bob', 'Carol', 'David'],
             ['dogs', 'cats', 'moose', 'goose']]
这里我想要的答案是
8
,但是如果列表更新,这可能会改变

当我使用
print(len(tableData))
时,我得到3,嵌套列表的数量。我也不能让循环工作来解决这个问题

很抱歉这是一个非常简单的问题,但我不知所措

提前谢谢你的帮助

正如您所注意到的,
len(tableData)
给出了
tableData
的元素数。您需要的是
tableData
元素的最大长度:

l = max(len(x) for sublist in tableData for x in sublist)


也许这对你有用:

new_list = []
for sub_list in tableData:
    for item in sub_list:
        new_list.append(item)

max_element = max(new_list, key=len)

print(max_element) # this actually prints the item
print(len(max_element)) # this will give you the length

迭代每个元素并获取其
len()
进行比较

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

maxCount = 0
for lst in tableData:
    for elem in lst:
        maxCount = max(maxCount, len(elem))

print(maxCount)
输出

8
现在,它的行为就像您有一个单一值的长列表,而不是一个值列表。现在,在扁平化列表中查找最长的项是很简单的:

max(chain.from_iterable(tableData), key=len)
这将返回
“cherries”

max(map(len, chain.from_iterable(tableData)))

这将返回
8

您可以尝试使用循环

l = 0 
for row in tableData: 
     for col in row: 
         l = len(col) if l < len(col) else l 
l=0
对于tableData中的行:
对于行中的列:
如果l
maxLength=0
对于tableData中的行:
maxRowElementLength=len(最大(行,键=len))
如果maxLength

请编辑您的问题,以便解释您的代码(您也可以考虑解释为什么只对代码进行回答是有用的)。如果我可以这么说的话,这是从提供的所有版本中最快的方法。对于
循环,它的速度大约是双生成器表达式的两倍,大约是两个
的三倍。这并不是说列表的大小很重要,只是说…
max(map(len, chain.from_iterable(tableData)))
l = 0 
for row in tableData: 
     for col in row: 
         l = len(col) if l < len(col) else l 
maxLength = 0
for row in tableData:
    maxRowElementLength = len(max(row, key=len))
    if maxLength < maxRowElementLength:
        maxLength = maxRowElementLength

print(maxLength)
>>> import numpy as np
>>> data=np.array([['apples', 'oranges', 'cherries', 'banana'],
             ['Alice', 'Bob', 'Carol', 'David'],
             ['dogs', 'cats', 'moose', 'goose']]).reshape(-1)
>>> max(data,key=len)
'cherries'
>>> len(max(data,key=len))
8