Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:按长度比较列表,并创建大小相同的新列表_Python_List_Compare - Fatal编程技术网

Python:按长度比较列表,并创建大小相同的新列表

Python:按长度比较列表,并创建大小相同的新列表,python,list,compare,Python,List,Compare,我有一个由任意长度的多个列表组成的大列表。我想比较每个列表的长度,并创建大小相同的新列表。 比如说, 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新手。有人能给我推荐一种更

我有一个由任意长度的多个列表组成的大列表。我想比较每个列表的长度,并创建大小相同的新列表。 比如说,

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新手。有人能给我推荐一种更便宜的方法来完成上述过程吗。
提前谢谢

看起来您想要
groupby
按元素
len
s列出一个列表:

>>> 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']]]

看起来您想按元素
len
s创建一个列表:

>>> 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']]]

我可以建议使用itertools groupby函数吗

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']]]

我可以建议使用itertools groupby函数吗

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']]]

谢谢你的快速回答。隐马尔可夫模型。。不仅仅是分类。我想有一个相同大小的新列表。例如,第一个列表包含所有包含1个元素的列表。。。同样,第二个列表包含2个元素的所有列表。如果这是一个愚蠢的问题,我很抱歉。哦,对不起,我没有注意到你例子中的额外括号。将edit@ManojFernando,我完成了我的编辑,但看起来艾伦·霍尔在我完成之前就已经完成了,所以他应该得到接受:)谢谢你的乐趣!!有趣的是,我们的做法几乎完全相同。@AaronHall,《python的禅宗:一种正确的方法》感谢您的快速回答。隐马尔可夫模型。。不仅仅是分类。我想有一个相同大小的新列表。例如,第一个列表包含所有包含1个元素的列表。。。同样,第二个列表包含2个元素的所有列表。如果这是一个愚蠢的问题,我很抱歉。哦,对不起,我没有注意到你例子中的额外括号。将edit@ManojFernando,我完成了我的编辑,但看起来艾伦·霍尔在我完成之前就已经完成了,所以他应该得到接受:)谢谢你的乐趣!!有趣的是,我们的做法几乎完全相同。@AaronHall,python的禅宗:一种正确的方法是使用
[[['a','b']],[[[x','y','z'],['d','f',g']],…]
等等?现在,与length-3列表不同,length-2列表不在单独的列表中。这就像你有
['ab'、['xyz'、'dfg']
一样,如果有
['ab']、['xyz'、'dfg']]
会更加一致。你是在尝试将每个给定大小的列表组合在一起吗?如果有
[['a'、'b']]、['x'、'y'、'z']、['d'、'f'、'g']]、…
等等,不是更有意义?现在,与length-3列表不同,length-2列表不在单独的列表中。这就像你有
['ab',['xyz','dfg']
一样,如果有
[['ab'],['xyz','dfg']
会更加一致。你想把每个给定大小的列表组合在一起吗?这就是我想要的。谢谢!:)再加一个是为了好玩这就是我想要的。谢谢!:)再加一个是为了好玩D