Size: a a a

2019 September 25

💭П

💭 Руслан Прохоров in rannts
Kirill (Cykooz) Kuzminykh
Ещё можно сделать генератор, особенно если у тебя третий питон, в котором можно делать вот так
yield from parse_type(element)
не понимаю как это заюзать....
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Ну вот как я написал
yield from parse_type(element)
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Тебе же, как я понял, надо список списков, превратить в плоский список?
источник

💭П

💭 Руслан Прохоров in rannts
Kirill (Cykooz) Kuzminykh
Тебе же, как я понял, надо список списков, превратить в плоский список?
Да. Там может быть много вложений
источник

💭П

💭 Руслан Прохоров in rannts
def parse_type(data: any):
   print(f"Current data: {data}")
   if isinstance(data, (int, float, str)):
       return data

   for element in data:
       print(f"Current element: {element}")
       yield from parse_type(element)


c = [("lol", [], ['kek']), 'kok', ('glist', ['glog', ('tron', 'most'), []])]
d = list(parse_type(c))
print(d)


Это не работает (
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Ну значит твой parse_type должен быть просто генератором, который возвращает элементы
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
💭 Руслан Прохоров
def parse_type(data: any):
   print(f"Current data: {data}")
   if isinstance(data, (int, float, str)):
       return data

   for element in data:
       print(f"Current element: {element}")
       yield from parse_type(element)


c = [("lol", [], ['kek']), 'kok', ('glist', ['glog', ('tron', 'most'), []])]
d = list(parse_type(c))
print(d)


Это не работает (
Конечно, потому что это не правильно
источник

💭П

💭 Руслан Прохоров in rannts
я знаю )
источник

💭П

💭 Руслан Прохоров in rannts
Но пока не понимаю.ю как сделать правильно
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Просто замени в первом варианте все места где добавляешь значение в result на yield добавляемого значения, кроме рекурсивного вызова. Его замени на
yield from parse_type(element)
источник

💭П

💭 Руслан Прохоров in rannts
Kirill (Cykooz) Kuzminykh
Просто замени в первом варианте все места где добавляешь значение в result на yield добавляемого значения, кроме рекурсивного вызова. Его замени на
yield from parse_type(element)
Спасибо!
источник

💭П

💭 Руслан Прохоров in rannts
def parse_type(data: any):
   print(f"Current data: {data}")
   if isinstance(data, (int, float, str)):
       yield data

   for element in data:
       print(f"Current element: {element}")
       if isinstance(element, (int, float, str)):
           yield element
       else:
           yield from parse_type(element)


Спасибо большое, @cykooz !!!
источник

in

ildar nizamov in rannts
@gnurian ты уже линукс починил? :)
источник

💭П

💭 Руслан Прохоров in rannts
ildar nizamov
@gnurian ты уже линукс починил? :)
Нет.
источник

БС

Байт Словович in rannts
💭 Руслан Прохоров
def parse_type(data: any):
   print(f"Current data: {data}")
   if isinstance(data, (int, float, str)):
       yield data

   for element in data:
       print(f"Current element: {element}")
       if isinstance(element, (int, float, str)):
           yield element
       else:
           yield from parse_type(element)


Спасибо большое, @cykooz !!!
вот так феншуйнее:
```
def parse_type(data: any):
   print(f"Current data: {data}")
   if isinstance(data, (int, float, str)):
       yield data

   for element in data:
       yield from parse_type(element)

```
источник

💭П

💭 Руслан Прохоров in rannts
Байт Словович
вот так феншуйнее:
```
def parse_type(data: any):
   print(f"Current data: {data}")
   if isinstance(data, (int, float, str)):
       yield data

   for element in data:
       yield from parse_type(element)

```
Убрать вторую проверку при переборе элементов?
источник

БС

Байт Словович in rannts
да, зачем дублировать код? Она сделается в рекурсивном вызове...
источник

💭П

💭 Руслан Прохоров in rannts
Байт Словович
да, зачем дублировать код? Она сделается в рекурсивном вызове...
Спасибо.
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
@gnurian И ещё надо return после первого yield-а
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
А то он сразу после него начнёт цикл пилить (например по символам строки)
источник