>我有一个大列表,由多个任意长度的列表组成。我想比较每个列表长度并创建相同大小的新列表。 例如
biglist = [['x','y','z'],['a','b'],['d','f','g'],...,['r','e','w','q','t','u','i']]
expected_list= [['a','b'],[['x','y','z'],['d','f','g']],....,['r','e','w','q','t','u','i']]
我是python的新手。 谁能建议我一种更便宜的方法来执行上述过程。 提前谢谢。
我可以建议使用迭代工具分组函数吗?
import itertools
biglist = [['x','y','z'],['a','b'],['d','f','g'],['r','e','w','q','t','u','i']]
print(list(list(i[1]) for i in itertools.groupby(sorted(biglist, key=len), len)))
哪些输出
[[['a', 'b']], [['x', 'y', 'z'], ['d', 'f', 'g']], [['r', 'e', 'w', 'q', 't', 'u', 'i']]]
看起来您想按元素len
sgroupby
列表:
>>> biglist = [['x', 'y', 'z'], ['a', 'b'], ['d', 'f', 'g'], ['r', 'e', 'w', 'q', 't', 'u', 'i']]
>>> expected_list = [list(b) for a, b in itertools.groupby(sorted(biglist, key=len), len)]
>>> expected_list
[[['a', 'b']], [['x', 'y', 'z'], ['d', 'f', 'g']], [['r', 'e', 'w', 'q', 't', 'u', 'i']]]