понимание вложенного списка с помощью оператора if / else - PullRequest
0 голосов
/ 09 октября 2019

У меня сложилось впечатление, что этот фрагмент можно улучшить с помощью понимания списка и функции, основанной на ответах. Затем я изменил этот фрагмент:

l=[['rfn'], ['abod'], [['splash', 'aesthet', 'art']], [['splash', 'aesthet', 'anim']], ['fabl'], ['clean']]
flat_list = []
for sublist in l:
    print("sublist: ", sublist)
    for item in sublist:
        if type(item)== list:
            for i in item:
                flat_list.append(i)
        else:
            flat_list.append(item)

print(flat_list)

На новую версию, которая не работает:

l=[['rfn'], ['abod'], [['splash', 'aesthet', 'art']], [['splash', 'aesthet', 'anim']], ['fabl'], ['clean']]

def foo(item):
    flat_l=[]
    if type(item)== list:
        for i in item:
            flat_l.append(i)
    else:
        flat_l.append(item)

    return flat_l

flat_list=[item for sublist in l foo(item) for item in sublist]

print(flat_list)

Который жалуется из-за синтаксической ошибки:

Файл "", строка 33 flat_list=[item for sublist in l foo(item) for item in sublist] ^ SyntaxError: неверный синтаксис

1 Ответ

0 голосов
/ 09 октября 2019

мой код в python3

l=[['rfn'], ['abod'], [['splash', 'aesthet', 'art']], [['splash', 'aesthet', 'anim']], ['fabl'], ['clean']]
e=[]
any(e.extend(i[0]) if isinstance(i[0], list) else e.extend(i) for i in l)
print(e)
...