2016-02-02 3 views
0

здесь мне нужно объединить список списков с булевым элементом.Python: Объединить список списков с булевым элементом?

Входные как этого

list = [[[3, [1, 2]]], [[1, [2, 3]]], False, [[4, [4, 5]]]] 

И освобожденного результат

[[3, [1, 2]], [1, [2, 3]], False, [4, [4, 5]]] 

Я попробовал этот

res = [] 
for x in list: 
    res.append(x) 
print res 

Спасибо заранее ...

+0

гляньте на это [расплющить (нерегулярной) список списков в Python] (HTTP: // StackOverflow. com/questions/2158395/flatten-an-irregular-list-of-lists-in-python) любой из ответов может быть изменен только на один уровень вложенности – Copperfield

ответ

3

Вы можете использовать список понимание, чтобы сохранить первый элемент из ваших подсписков, если они действительны (if sub) в противном случае сам список подменю:

>>> lst = [[[3, [1, 2]]], [[1, [2, 3]]], False, [[4, [4, 5]]]] 
>>> [sub[0] if sub else sub for sub in lst] 
[[3, [1, 2]], [1, [2, 3]], False, [4, [4, 5]]] 

Примечание: Не используйте ключевые слова python и имена встроенного типа в качестве ваших переменных и имен объектов.

Как предложил @Padraic Cunningham, для более точного пути вы можете использовать isinstance():

>>> [sub[0] if isinstance(sub, list) else sub for sub in lst] 
[[3, [1, 2]], [1, [2, 3]], False, [4, [4, 5]]] 
+0

Что делать, если в списке есть «True»? – kfx

+1

@kfx В этом случае нам также нужно проверить это. Здесь может быть много сценариев, но мы имеем дело с этим. – Kasramvd

+1

'if isinstance (...' будет лучше, как если бы sub вернет ложные срабатывания –

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