我想编写一个函数,它带有一个列表列表,并返回一个列表大小相同的列表。例如,使用[[1,2], [0,1], [1,2,3], [0,1,2], [1,2,3,4]]
作为输入,该函数应该返回[[[1,2],[0,1]], [[1,2,3],[0,1,2]], [[1,2,3,4]]]
。我知道最长的名单的长度。将列表转换为列表长度相等的列表的更多嵌套列表的最佳方法?
我的第一直觉是使用这个列表理解:
def nestedlenlist(biglist,maxlen):
return [[lists for lists in biglist if len(lists) == n] for n in xrange(0,maxlen)]
我有两个抱怨这一点:
- 它重复
maxlen
次以上列表中,这可能需要一些时间,更长的列表。 - 如果我不知道列表的最大长度怎么办?
一个解决方案可能涉及sorted
:第一排序列表中,这样你只需要打开名册一次,拆分它,每当biglist[i]
和biglist[i+1]
大小不同。但是后来我发现自己正在循环和乱搞索引,这是你通常想避免在Python中做的事情。
那么什么是最快和最Python的方法来做到这一点?
我真不”不要理解为什么人们无缘无故地回答问题。 –
我也一样,一定是因为这是一个初学者的问题。 (如果有什么我应该做的,否则请告诉我) – Emiel
那么Python是非常主观的,也许只是说_fastest_或大多数_efficient_是一个更好的方式来表达它。如果你想要一些东西,可以这么说。或者,如果你想要一个单行列表理解,你也可以这么说:D(这是一个很酷的python特征) –