2016-12-13 3 views

ответ

0

Наслаждайтесь:

def convert(lst): 
    if all(not isinstance(e, (list, tuple)) for e in lst): 
     return lst[:] 
    else: 
     result = [] 
     for e in lst: 
      if isinstance(e, (list, tuple)): 
       converted = convert(e) 
       result.extend(converted) 
      else: 
       result.append(e) 
     return result 
+0

Спасибо за ваш ответ. Но я опубликовал еще одну версию для решения ... Пожалуйста, дайте свои комментарии ..... – python19

+0

Где вы его разместили? – Fomalhaut

+0

Как раз под вашим ответом ... Я написал еще один ответ ... – python19

0

Я рассматриваю это как задание для обработки текста. Сначала преобразуем список переходов в строковое представление, затем разделим строку на мелкие части, каждый из которых содержит элемент, и, наконец, я использую пустой список, получаю эти свежие элементы. мой код snippt:

def simpleL(complexL): 
    a =repr(complexL).split(',') 
    c=[] 
    for i in a: 
     element =i.strip('[()] ') 
     if element.isdigit(): 
      c.append(int(element)) 
    return c 
0
output = [] 
def uni_lst(lst): 
    if type(lst) in [list, tuple]: 
     for x in lst: 
      if type(x) in [list, tuple]: 
       uni_lst(x) 
      else: 
       output.append(x) 
    return output 

Приведенный выше код будет сделать один список из любого типа списка или кортежа.

+0

Насколько я вижу, он работает, но есть некоторые недостатки, которые я нахожу. Во-первых, лучше проверить экземпляр с помощью встроенной функции 'isinstance' следующим образом:' isinstance (lst, (list, tuple)) 'вместо' type (x) в [list, tuple] '(подробнее см. PEP8 : https://www.python.org/dev/peps/pep-0008/). Другим недостатком является использование глобального объекта 'output', хорошая функция должна выполнять все операции внутри. – Fomalhaut

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