合并列表中的一些元素

时间:2013-05-03 11:19:34

标签: python python-2.7 list-comprehension

给出这个嵌套列表:

nested_lst = [u'Tom', ['50', ' 1.85', ' 112', ' 60', ' 1.90', ' 115']]

我想加入nested_lst[1]的每3个元素作为结果:

nested_lst = [u'Tom', [('50', ' 1.85', ' 112'), (' 60', ' 1.90', ' 115')]]

2 个答案:

答案 0 :(得分:4)

使用列表理解:

>>> nested_lst = [u'Tom', ['50', ' 1.85', ' 112', ' 60', ' 1.90', ' 115']]
>>> x=nested_lst[1]

>>> nested_lst[1]=[ tuple(x[i:i+3]) for i in xrange(0,len(x),3) ]
>>> nested_lst
[u'Tom', [('50', ' 1.85', ' 112'), (' 60', ' 1.90', ' 115')]]

或者您也可以使用itertools.islice

>>> from itertools import islice
>>> nested_lst = [u'Tom', ['50', ' 1.85', ' 112', ' 60', ' 1.90', ' 115']]
>>> x=nested_lst[1]
>>> it=iter(x)

>>> nested_lst[1]=[tuple( islice(it,3) ) for i in xrange(len(x)/3)]
>>> nested_lst
[u'Tom', [('50', ' 1.85', ' 112'), (' 60', ' 1.90', ' 115')]]

答案 1 :(得分:2)

通常你会使用@AshwiniChaudhary发布的列表理解,但这是使用this technique

的备用解决方案
>>> nested_lst = [u'Tom', ['50', ' 1.85', ' 112', ' 60', ' 1.90', ' 115']]
>>> [nested_lst[0], zip(*[iter(nested_lst[1])]*3)]
[u'Tom', [('50', ' 1.85', ' 112'), (' 60', ' 1.90', ' 115')]]