我想在没有逗号的情况下在python中打印2D列表。
而不是打印
[[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] ... ]
有关我应该如何做的任何见解?
谢谢!
答案 0 :(得分:5)
简单:在转换为带repr
的字符串后,只需用空格替换逗号。
def repr_with_spaces(lst):
return repr(lst).replace(",", " ")
(这适用于整数列表,但不一定适用于其他任何内容。)
答案 1 :(得分:2)
这是一般解决方案。使用指定的分隔符将序列转换为字符串,并指定左右包围字符。
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)
检查?原因如下:
How to check if an object is a list or tuple (but not string)?
答案 2 :(得分:1)
一种通用的,安全的和递归的解决方案,如果数据包含逗号,则有效:
def my_repr(o):
if isinstance(o, list):
return '[' + ' '.join(my_repr(x) for x in o) + ']'
else:
return repr(o)
list_repr
的CPython实现使用了这个算法(使用_PyString_Join
)。
答案 3 :(得分:0)
有几种方式:
your_string.replace(',',' ')
' '.join(your_string.split(','))
答案 4 :(得分:0)
好吧,作为一个单行应用于变量“a”中的数组:
print "[" + ' '.join(map(lambda row: "[" + ' '.join(map(str, row)) + "] ", a)) + "]"
答案 5 :(得分:0)
您可以使用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)
ideone示例:http://ideone.com/g1VdE
答案 6 :(得分:0)
时
str([1,2],[3,4]).replace(","," ")
你想要什么?