2013-05-03 2 views
1

Учитывая этот вложенный список:Объединение некоторых элементов внутри списка

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

Я хотел бы присоединиться каждые 3 элементов nested_lst[1] для результата:

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

К сожалению, книга рекомендации вне темы для переполнения стека, они просто не подходят формат здесь. –

+0

@MartijnPieters: Хорошо, ясно ... Я удалю свой ответ для ясности. –

ответ

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

+1 Ударь меня к нему – Harpal

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')]] 
Смежные вопросы