#python
#питон
Вопрос:
Предполагая , что у меня есть
a = [[0, 1], [0, 2]]
Я хочу, используя oneliner с join
и map
, распечатать его как :
0 1
0 2
Самое близкое, что у меня есть, это :
print("n".join(map("".join, map(str, a))))
что дает :
[0, 1]
[0, 2]
Комментарии:
1. Что такое переменная «res»?
2. @QuarticCat
map(lambda)
уродлив. Вместо этого используйте понимание.'n'.join(' '.join(map(str, x)) for x in a)
3. @adaba Использует
map(lambda)
, что некрасиво. Есть ли причина, по которой вы хотите избежать понимания?4. разве ты не можешь просто сделать простую:
for i in a: print (*i)
5. @wjandrea, потому что OP просит
join
иmap
s . Если понимание разрешено, вы можете написать'n'.join(' '.join(str(e) for e in l) for l in a)
Ответ №1:
Вы находитесь на одном уровне итерации:
In []:
print('n'.join(' '.join(map(str, b)) for b in a))
Out[]:
0 1
0 2
Или:
In []:
print('n'.join(map(' '.join, map(lambda b: map(str, b), a))))
Out[]:
0 1
0 2
Или, если вы действительно не хотите использовать лямбда, тогда вы можете использовать functools.partial
, но теперь это становится действительно уродливым:
import functools as ft
In []:
print('n'.join(map(' '.join, map(ft.partial(map, str), a))))
Out[]:
0 1
0 2
Комментарии:
1. Что было бы эквивалентно без использования «для b в a»?
2. Вы можете
map()
, но вам нуженlambda
. Обновлено.
Ответ №2:
Вы можете сделать это с помощью map
и lambda
:
print("n".join(map(lambda x: " ".join(map(str, x)), a)))
0 1
0 2
Редактировать: Только что увидел комментарий с тем же методом, ну что ж.
Ответ №3:
Вы можете сделать это гораздо более чисто, используя цикл for с print
вместо однострочного с map
и join
:
for x in a:
print(*x)
print
автоматически преобразует его аргументы в строку, соединяет их с помощью пробелов и добавляет завершающий символ новой строки.