Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 19, 2013 23:24:25

nokados
От: Ростов
Зарегистрирован: 2013-10-15
Сообщения: 52
Репутация: +  0  -
Профиль   Отправить e-mail  

map, lambda, join - упростить!

Вследствие некоторых ухищрений для вывода матрицы у меня получилась вот такая строка кода:

print('\n'.join(map(','.join,map(lambda x: map(str,x),res))))
Можно ли это как-нибудь упростить, а то как-то нечитабельно?



моя подпись

Офлайн

#2 Окт. 19, 2013 23:41:10

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

map, lambda, join - упростить!

Может как то так

import sys
res = [
	[1, 2, 3],
	[4, 5, 6]
]
map (sys.stdout.write,  [", ".join(map(str, x)) + "\n" for x in res])
А вообще однострочники хороши только для писькомерства, пишите цикл и не парьтесь.



Офлайн

#3 Окт. 19, 2013 23:52:53

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

map, lambda, join - упростить!

nokados
очень хороший тон, когда вместе с таким вопросом предоставляют исходные данные и выходные…мы ж не знаем чего вы хотите достичь



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#4 Окт. 20, 2013 09:27:55

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

map, lambda, join - упростить!

один map лишний

print('\n'.join(
    map(lambda x: ', '.join(map(str,x)),
        res)))

Офлайн

#5 Окт. 20, 2013 16:55:33

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

map, lambda, join - упростить!

С обратной стороны проще.

print( str(res)[2:-2].replace('], [', '\n') )

Если речь идет именно о выводе, то можно еще так:
for l in res: print(*l, sep=', ')



Отредактировано Isem (Окт. 20, 2013 17:52:01)

Офлайн

#6 Окт. 21, 2013 03:47:30

fttk
Зарегистрирован: 2012-08-13
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

map, lambda, join - упростить!

Здравствуйте, это конкурс на лучший однострочник?

res = [[1,2,3],[4,5,6]]
c = lambda a: lambda b: a.join(map(str, b))
print c('\n')(map(c(', '), res))

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version