读书人

把一个列表按照相邻的是否相同来分组,

发布时间: 2013-01-27 13:55:24 作者: rapoo

把一个列表按照相邻的是否相同来分组
example:

[1,1,1,2,2,3,1,1]
---->
[[1,1,1],[2,2],[3],[1,1]]
注意!顺序不能变
[解决办法]

#!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()

[解决办法]
[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

读书人网 >perl python

热点推荐