我写了以下代码:
for row in range(len(listOfLists)):
print('+' + '-+'*len(listOfLists))
print('|', end='')
for col in range(len(listOfLists[row])):
print(listOfLists[row][col], end='|')
print(' ') #To change lines
print('+' + '-+'*len(listOfLists))
输入:
[['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'], ['j', 'k', 'l']]
输出:
+-+-+-+-+ |a|b|c| +-+-+-+-+ |d|e|f| +-+-+-+-+ |g|h|i| +-+-+-+-+ |j|k|l| +-+-+-+-+
期望的输出:
+-+-+-+ |a|b|c| +-+-+-+ |d|e|f| +-+-+-+ |g|h|i| +-+-+-+ |j|k|l| +-+-+-+
打印' + - +'围绕2D阵列的元素。 但是,我的代码仅适用于方阵(n ^ 2)。
如何概括它以使其适用于任何数组变体(只要所有列表长度相等)
谢谢
答案 0 :(得分:2)
您的问题是len(listOfLists)
在两个方向上都用于打印表的大小。 len(listOfLists)
默认为行数,通过len(listOfLists[0])
获得列数。
listOfLists = [['a', 'b', 'c'],
['d', 'e', 'f'],
['g', 'h', 'i'],
['j', 'k', 'l']]
for row in range(len(listOfLists)):
print('+' + '-+'*len(listOfLists[0]))
print('|', end='')
for col in range(len(listOfLists[row])):
print(listOfLists[row][col], end='|')
print(' ') #To change lines
print('+' + '-+'*(len(listOfLists[0])))
输出:
+-+-+-+
|a|b|c|
+-+-+-+
|d|e|f|
+-+-+-+
|g|h|i|
+-+-+-+
|j|k|l|
+-+-+-+
快乐的编码!
答案 1 :(得分:2)
您正在根据行数而不是列数打印此分隔符。使用其他测试用例有助于立即调试。
def printListOfLists(listOfLists):
for row in range(len(listOfLists)):
print('+' + '-+' * len(listOfLists[0]))
print('|', end='')
for col in range(len(listOfLists[row])):
print(listOfLists[row][col], end='|')
print(' ') # To change lines
print('+' + '-+' * len(listOfLists[0]))
printListOfLists([
['a', 'b', 'c'],
['d', 'e', 'f'],
['g', 'h', 'i'],
['j', 'k', 'l']
])
printListOfLists([['a', 'b', 'c']])
printListOfLists([['a'], ['b'], ['c']])
现在预期所有产生的结果:
+-+-+-+
|a|b|c|
+-+-+-+
|d|e|f|
+-+-+-+
|g|h|i|
+-+-+-+
|j|k|l|
+-+-+-+
+-+-+-+
|a|b|c|
+-+-+-+
+-+
|a|
+-+
|b|
+-+
|c|
+-+
答案 2 :(得分:1)
def awesome_print(listOfLists):
for row in range(len(listOfLists)):
print('+' + '-+'*len(listOfLists[row]))
print('|', end='')
for col in range(len(listOfLists[row])):
print(listOfLists[row][col], end='|')
print(' ') #To change lines
print('+' + '-+'*len(listOfLists[row]))
awesome_print([[1,2,3], [1,2,3], [2,3,0], [2,3,4]])
输出
+-+-+-+
|1|2|3|
+-+-+-+
|1|2|3|
+-+-+-+
|2|3|0|
+-+-+-+
|2|3|4|
+-+-+-+
如果您需要打印具有非固定大小的子阵列的数据
def awesome_print2(listOfLists):
for row in range(len(listOfLists)):
print('+' + '-+'*len(listOfLists[row]))
print('|', end='')
for col in range(len(listOfLists[row])):
print(listOfLists[row][col], end='|')
print()
print('+' + '-+'*len(listOfLists[row]))
awesome_print2([[1,2,3,5], [1,2,3], [2,3,0,6,3], [2,3,4]])
输出:
+-+-+-+-+
|1|2|3|5|
+-+-+-+-+
+-+-+-+
|1|2|3|
+-+-+-+
+-+-+-+-+-+
|2|3|0|6|3|
+-+-+-+-+-+
+-+-+-+
|2|3|4|
+-+-+-+