Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 调用打印的函数,避免换行_Python_Python 2.7 - Fatal编程技术网

Python 调用打印的函数,避免换行

Python 调用打印的函数,避免换行,python,python-2.7,Python,Python 2.7,我有一个打印数组的函数: In [93]: printArr(arrs[0], Nrows, Ncols) # # # # # # # # # O O O O O O O O O 其中,在printArr函数中,我在该函数调用pythons print函数的末尾添加了一个逗号(,),以获得3列的输出 但是,如果我想对printArr进行多次调用,并将输出堆叠到列中,如下图所示,该怎么办 # # # O O O # # # # # # # # # #

我有一个打印数组的函数:

In [93]:

printArr(arrs[0], Nrows, Ncols)
# # #  
# # #  
# # #  
O O O  
O O O  
O O O 
其中,在printArr函数中,我在该函数调用pythons print函数的末尾添加了一个逗号(,),以获得3列的输出

但是,如果我想对printArr进行多次调用,并将输出堆叠到列中,如下图所示,该怎么办

# # #    O O O 
# # #    # # #
# # #    # # #
O O O    O O O
O O O    O O O
O O O    O O O
给printArr打了两个电话我就知道了

In [96]:

printArr(arrs[0], Nrows, Ncols)
print " "
printArr(arrs[1], Nrows, Ncols)    
​
# # #  
# # #  
# # #  
O O O  
O O O  
O O O  

O O O  
# # #  
# # #  
# # #  
O O O  
O O O  
有没有办法做到这一点,或者我必须重做我的整个printArr函数

谢谢

编辑: 好的,这是我的printArr函数

它以一个三维Ndarray作为输入,我打算使用该函数以一种很好的方式打印该数组中的所有矩阵(例如,共有3列和3行)


再次感谢

您可以创建一个行生成器,并在打印功能中使用它:

def printArrays(listOfArrays,cols):
    splittedArrays = [[array[x:x+cols] for x in range(0,len(array),cols)] for array in listOfArrays]
    c = list(zip(*splittedArrays))
    c = ["".join([[" "+"".join(y)][0]for y in x]) for x in c]
    print("\n".join([" ".join(array) for array in c]))

a =["a","b","c","a","b","c"]
b= ["x","y","z","x","y","z"]
printArrays([a,b],3)
printArrays([a,b],2)
def rows(arr):
    for row in arr:
        yield " ".join('#' if c == 1 else 'O' for c in row)

def printArr(arr):
    print "\n".join(rows(arr))

from itertools import izip_longest
def print2Arr(arr1, cols1, arr2, cols2):
    for row1, row2 in izip_longest(rows(arr1), rows(arr2)):
        row1 = row1 or " " * (2 * cols1 - 1)
        row2 = row2 or " " * (2 * cols2 - 1)
        print row1 + "    " + row2
示例:

>>> arr1 = [[1, 0, 0], [1, 1, 0]]
>>> arr2 = [[1, 0, 0], [1, 1, 0], [1, 0, 0]]
>>> printArr(arr1)
# O O
# # O
>>> print2Arr(arr1, 3, arr2, 3)
# O O    # O O
# # O    # # O
         # O O
>>> print2Arr(arr2, 3, arr1, 3)
# O O    # O O
# # O    # # O
# O O

你必须重做你的功能。一旦光标下移到新行,就没有内置的方法返回并打印更多内容。(我将此作为评论而不是回答,因为“好的,我应该如何重做我的函数?”是一个我不想打开的蠕虫程序)向我们展示你函数的实现,以便我们可以帮助你编辑它以获得预期的输出。如果元素是字符串,那么它是一个Numpy NdarrayOutput将是错误的-它们得到
split
ted.
c=['one','other','string'];printaries(c,3)
产生'o n e a n o s t r'。
>>> arr1 = [[1, 0, 0], [1, 1, 0]]
>>> arr2 = [[1, 0, 0], [1, 1, 0], [1, 0, 0]]
>>> printArr(arr1)
# O O
# # O
>>> print2Arr(arr1, 3, arr2, 3)
# O O    # O O
# # O    # # O
         # O O
>>> print2Arr(arr2, 3, arr1, 3)
# O O    # O O
# # O    # # O
# O O