2016-02-23 2 views
-3

Скажем, у меня есть список, подобный приведенному ниже.Как преобразовать список?

['butter', 'potatos', 'cheese', ['butter', 'potatos'], ['butter', 'cheese'], ['potatos', 'cheese']] 
  1. Как я могу изменить список на одну ниже, где два слова комбинации становится одним словом?

    ['butter', 'potatos', 'cheese', 'butter+potatos', 'butter+cheese', 'potatos+cheese'] 
    
  2. Как я могу сцепить каждый из термина в преобразованном списке 1. в одно значение с пробелом между каждым термином, как показано ниже?

    ['butter potatos cheese butter+potatos butter+cheese potatos+cheese'] 
    
+0

Возможный дубликат [Сведение неглубокого списка в Python] (http://stackoverflow.com/questions/406121/flattening-a-shallow-list-in-python) – Prune

ответ

3

Что-то вроде этого, может быть:

>>> food = ['butter', 'potatos', 'cheese', ['butter', 'potatos'], ['butter', 'cheese'], ['potatos', 'cheese']] 
>>> combinations = [f if type(f) != list else '+'.join(f) for f in food] 
>>> combinations 
['butter', 'potatos', 'cheese', 'butter+potatos', 'butter+cheese', 'potatos+cheese'] 
>>> output = ' '.join(combinations) 
>>> output 
'butter potatos cheese butter+potatos butter+cheese potatos+cheese' 

combinations присваивается значение списка понимания. Понимание будет проходить через все значения, называемые f, в food и проверить, является ли элемент списком или нет. Если это список, строки в списке будут join ed вместе, иначе f будет использоваться как есть.

Для вывода снова используется метод join.

+0

Это лишь половина –

+0

Вот почему я только половина вашего представителя. @TimCastelijns :) Редактирование ниндзя. –

0
>>> say = ['butter', 'potatos', 'cheese', ['butter', 'potatos'], ['butter', 'cheese'], ['potatos', 'cheese']] 

>>> # 1 
>>> ['+'.join(x) if isinstance(x, list) else x for x in say] 
['butter', 'potatos', 'cheese', 'butter+potatos', 'butter+cheese', 'potatos+cheese'] 
>>> # 2 
>>> [' '.join([x if isinstance(x, str) else '+'.join(x) for x in say])] 
['butter potatos cheese butter+potatos butter+cheese potatos+cheese'] 
+0

Это только половина –

+0

как сейчас :-) –

+0

Теперь это почти то же самое, что и у другого, кроме твоего недостатка. –

Смежные вопросы