Size: a a a

2019 December 02

SP

Stepan Potapov in SPb Python
Simon Osipov
>>> params = ['a', 'b', 'c', 'd', 'e', 'f', 'g', ('h', 'i')]
>>> new_param = [item for sublist in params for item in sublist]
>>> new_param
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
о, вот она магия питона)
Спасибо!
честно говоря, решение Юли мне более понятно, но я как раз искал какую-то магическую строчку, которая с чего-то всё делает правильно, сейчас попробую ее расковырять))
источник

YV

Yuliya Volkova in SPb Python
у Симона проще вариант и более питонячий, но  он работает только для букв
источник

YV

Yuliya Volkova in SPb Python
если строка будет из больше 1 символа - будет ересь
источник

SO

Simon Osipov in SPb Python
list comprehension + flat out (механика сделать лист одномерным массивом)
источник

SO

Simon Osipov in SPb Python
Yuliya Volkova
если строка будет из больше 1 символа - будет ересь
Верно
источник

YV

Yuliya Volkova in SPb Python
если у тебя только по 1 символу строки, то конечно да - вариант Симона
источник

SP

Stepan Potapov in SPb Python
нет, у меня str, но > 1 символа
источник

YV

Yuliya Volkova in SPb Python
ну тогда этот вариант не подойдет с new_param = [item for sublist in params for item in sublist]
источник

YV

Yuliya Volkova in SPb Python
ну и если вдруг какой-то None прилетит там - тоже ошибка будет
источник

SP

Stepan Potapov in SPb Python
Понял, спасибо!
источник

s

shigarus in SPb Python
Yuliya Volkova
params = ['a', 'b', 'c', 'd', 'e', 'f', 'g', ('h', 'i'),  ('b', 'h', 'i')]
for num, elem in enumerate(params):
   if isinstance(elem, tuple):
       tuple_elem = params.pop(num)
       [params.insert(num+i, elem[i]) for i in range(len(elem))]
последнюю строку лучше написать так, это будет немного эффективней
params[num: num+1] = tuple_elem
источник

DI

Danil Ivanov in SPb Python
Stepan Potapov
привет всем!
Есть ли среди нас те, кто знает и python и java ?
я не очень хорошо знаю python, поэтому у меня возник вопрос
итак, есть структура данных:
params = ['a', 'b', 'c', 'd', 'e', 'f', 'g', ('h', 'i')]
 задание: развернуть этот список так, чтобы элементы tuple превратились в часть списка без tuple
наивно, я пишу вот это (с проверочками):
for i in params:
   print(i)
   if type(i) is tuple:
       print(i)
       for j in range(len(i)):
           params.append(i[j])
       params.remove(i)

 Однако, я немного знаю джаву и понимаю, что на стримах джавы это было бы красиво и быстрее, чем в цикле
но я не достаточно хорошо знаю python, чтобы сыммитировать джавовое поведение в нем

итак, вопрос
можно ли написать решение задачи на python функциональных операторах? - и как, если можно?
каждый язык нуждается в своём бутстрапе ) мы активно используем funcy

https://funcy.readthedocs.io/en/stable/seqs.html#flatten
источник

SP

Stepan Potapov in SPb Python
название приятное, спасибо, Данил, я обызательно прочитаю
источник

SP

Stepan Potapov in SPb Python
shigarus
последнюю строку лучше написать так, это будет немного эффективней
params[num: num+1] = tuple_elem
норм, спасибо!
источник

YV

Yuliya Volkova in SPb Python
источник

DI

Danil Ivanov in SPb Python
ой вей, асинхроная джанга )) давно я в ней не ковырялся, но видимо повод появился
источник

АТ

Андрей Трефилов in SPb Python
ого
источник

АТ

Андрей Трефилов in SPb Python
быстро они
источник

SM

Serge Matveenko in SPb Python
Danil Ivanov
ой вей, асинхроная джанга )) давно я в ней не ковырялся, но видимо повод появился
Теперь бы ещё из Django Channels сделали что-то подходящее для реального использования...
Придётся поковыряться в 3.0, да.
источник

MA

Maxim Afanasev in SPb Python
Не похоже, что там что-то сильно поменялось, по меньшей мере в плане API. Ну, и "Django 3.0 begins our journey to making Django fully async-capable" как бы намекает.
источник