读书人

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

发布时间: 2012-11-08 08:48:11 作者: rapoo

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

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

[解决办法]

Python code
#!usr/bin/env pythondef 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 sublistif __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-8import itertoolsgroups = []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

热点推荐