在Python中如何在二维列表中查找内部列表的最大长度?

时间:2018-07-21 07:04:42

标签: python numpy

我经常创建一个列表列表,其中内部列表的长度各不相同,例如代表一堆长度不一的句子

show client_encoding

我需要将它们转换为numpy矩阵。为了使所有相同长度的内部列表,我在末尾填充一个虚拟元素,并使所有内部列表等于最大长度。

有什么紧凑的方法可以找到内部列表的最大长度?

我通常通过编写for循环并跟踪最大长度来做到这一点,但是我经常这样做,以至于我需要一种更好的方法。

5 个答案:

答案 0 :(得分:5)

使用max函数:

max(your_list, key=len)

您将获得最长的列表,如果您需要实际的长度,只需再次使用len

len(max(your_list, key=len))

这里有live example

答案 1 :(得分:2)

并订购:

>>> A=[['Hello', 'world'], ['how','are','you'], ['have','a','good','day']]
>>> sorted(A,key=len)
[['Hello', 'world'], ['how', 'are', 'you'], ['have', 'a', 'good', 'day']]
>>> 

答案 2 :(得分:1)

您可以按照以下步骤进行操作:

max([len(item) for item in A])

答案 3 :(得分:1)

使用mapmax,您可以轻松找到子列表的最大长度

>>> max(map(len, lst))
4

答案 4 :(得分:-1)

要在numpy数组中转换列表列表,可以尝试以下代码段。第四行填充数据,第五行创建numpy数组。

import numpy as np
data=[['Hello', 'world'], ['how','are','you'], ['have','a','good','day']]
max_length = max(map(len, data))
[e1.extend(['']*(max_length - len(e1))) for e1 in data]
np_data=np.array(data)