3

コンマなしで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] ... ]

同じことをどのように行うべきかについての洞察はありますか?

ありがとう!

4

7 に答える 7

5

簡単: で文字列に変換した後、コンマをスペースに置き換えるだけreprです。

def repr_with_spaces(lst):
    return repr(lst).replace(",", " ")

(これは整数のリストでは機能しますが、それ以外では必ずしも機能しません。)

于 2012-07-31T18:18:55.710 に答える
3

これが一般的な解決策です。指定された区切り記号と指定された左および右の括弧文字を使用して、シーケンスを文字列に変換します。

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)コードにそのチェックがあるのはなぜですか?理由は次のとおりです。

オブジェクトがリストまたはタプル(文字列ではない)かどうかを確認する方法は?

于 2012-07-31T18:33:35.387 に答える
2

データにコンマが含まれている場合に機能する、一般的で安全な再帰的ソリューション:

def my_repr(o):
    if isinstance(o, list):
        return '[' + ' '.join(my_repr(x) for x in o) + ']'
    else:
        return repr(o)

の CPython 実装でlist_reprは、このアルゴリズムが不可欠です ( を使用_PyString_Join)。

于 2012-07-31T18:23:25.150 に答える
0

str([1,2],[3,4]).replace(","," ")

あなたが欲しかったものは何ですか?

于 2012-07-31T18:30:38.543 に答える
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

于 2012-07-31T18:23:33.027 に答える
0

いくつかの方法があります:

your_string.replace(',',' ') 

' '.join(your_string.split(','))
于 2012-07-31T18:21:08.627 に答える
0

さて、変数「a」の配列に適用されるワンライナーとして:

print "[" + ' '.join(map(lambda row: "[" + ' '.join(map(str, row)) + "] ", a)) + "]"
于 2012-07-31T18:21:33.450 に答える