Печать двумерного списка в python без запятых
Я бы хотел напечатать 2D-список в python без запятых.
Вместо печати
[[0,0,0,0,0,1,1,1,1,1,1],[0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0,1,1,0,1],[1,1,1] ... ]
Я хочу распечатать
[[0 0 0 0 0 1 1 1 1 1 1 1] [0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 1 1 0 1] [1 1 1] ... ]
Любое понимание того, как я должен поступать так же?
Благодаря!
- Python: индексирование списка списков
- python перебирает два списка при сравнении элементов
- Первый индекс списка Python больше, чем x?
- Python: список, содержащий подсписку строк
- Поиск общих элементов из двух списков списков
Просто: просто замените запятые пробелами после преобразования в строку с repr
.
def repr_with_spaces(lst): return repr(lst).replace(",", " ")
(Это работает для списков целых чисел, но не обязательно для чего-либо еще.)
Вот общее решение. Преобразуйте последовательность в строку с использованием указанного разделителя и задайте символы левого и правого брекетинга.
lst = [[0,0,0,0,0,1,1,1,1,1,1],[0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0,1,1,0,1],[1,1,1]] import sys if sys.version_info[0] >= 3: basestring = str try: from collections.abc import Iterable except ImportError: from collections import Iterable def str_seq(seq, sep=' ', s_left='[', s_right=']'): if isinstance(seq, basestring): return seq if isinstance(seq, Iterable): s = sep.join(str_seq(x, sep, s_left, s_right) for x in seq) return s_left + s + s_right else: return str(seq) print(str_seq(lst))
Почему у этого кода есть isinstance(seq, basestr)
? Вот почему:
Как проверить, является ли объект списком или кортежем (но не строкой)?
Общее, безопасное и рекурсивное решение, которое работает, если данные содержат запятые:
def my_repr(o): if isinstance(o, list): return '[' + ' '.join(my_repr(x) for x in o) + ']' else: return repr(o)
Реализация list_repr
на list_repr
использует необходимый алгоритм (используя _PyString_Join
).
Есть несколько способов:
your_string.replace(',',' ') ' '.join(your_string.split(','))
Ну, как однострочный, применяемый к массиву в переменной «a»:
print "[" + ' '.join(map(lambda row: "[" + ' '.join(map(str, row)) + "] ", a)) + "]"
Вы можете использовать str.join()
:
lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] def format_list(items): list_contents = ' '.join(str(it) for it in items) # convert contents to string too return '[{}]'.format(list_contents) # wrap in brackets formatted = format_list(format_list(l) for l in lists)
Идеальный пример: http://ideone.com/g1VdE
Является
str([1,2],[3,4]).replace(","," ")
что вы хотели?
- Python 2.7+: Каков правильный способ форматирования float в ненаучной нотации с определенной точностью?
- Соответствующая строка чисел и букв и определенной длины
- Создайте новый список из списка списков и напечатайте точно в Python
- Если в Python я помещаю список внутри кортежа, могу ли я безопасно изменить содержимое этого списка?
- Передача non-iterable в list.extend ()
- lstrip (), rstrip () для списков
- Доступ к значению в кортеже, который находится в списке
- Python: преобразовать список списков кортежей
- Python: понимание разницы между добавлением и расширением
- Pythonic способ разбить список после элементов, для которых данный предикат является истинным
- Элегантный способ нарезать список с условием