把一个列表依照相邻的是否相同来分组
把一个列表按照相邻的是否相同来分组
example:
[1,1,1,2,2,3,1,1]
---->
[[1,1,1],[2,2],[3],[1,1]]
注意!顺序不能变
------解决方案--------------------
example:
[1,1,1,2,2,3,1,1]
---->
[[1,1,1],[2,2],[3],[1,1]]
注意!顺序不能变
------解决方案--------------------
- Python code
#!usr/bin/env python def fun( list ) : if( len( list ) == 0 ) : return [] a = list[0] list2 = [] sublist = [] sublist.append( a ) for elem in list[ 1 : ] : if( elem == a ) : sublist.append( elem ) else : list2.append( sublist ) a = elem sublist = [ elem ] list2.append( sublist ) return list2 def test() : list1 = [ 1, 1, 1, 2, 2, 3, 1, 1 ] list2 = fun( list1 ) for sublist in list2 : print sublist if __name__ == '__main__' : test()
------解决方案--------------------
- Python code
[root@vps616 python]# python main.py [[1, 1, 1], [2, 2], [3], [1, 1]] [root@vps616 python]# cat main.py #python2.7.3 #coding=utf-8 import itertools groups = [] data = [1, 1, 1, 2, 2, 3, 1, 1] for key, group in itertools.groupby(data, lambda x: x): groups.append(list(group)) print groups