我经常创建一个列表列表,其中内部列表的长度各不相同,例如代表一堆长度不一的句子
show client_encoding
我需要将它们转换为numpy矩阵。为了使所有相同长度的内部列表,我在末尾填充一个虚拟元素,并使所有内部列表等于最大长度。
有什么紧凑的方法可以找到内部列表的最大长度?
我通常通过编写for循环并跟踪最大长度来做到这一点,但是我经常这样做,以至于我需要一种更好的方法。
答案 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)
使用map
和max
,您可以轻松找到子列表的最大长度
>>> 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)