无法正确显示数组 (Python3)
Trouble getting the right appearance of an array (Python3)
我正在尝试构建一个数组,但我似乎做不好:我要么获得我想要的外观,要么获得我想要的功能,但永远不能两者兼得。我是计算机科学的新手,我已经在这上面花了很多时间,请帮助我指明正确的方向。
#tried this and could access elements, but then how do I add the appearance of the list without turning the elements into strings?
board = []
for i in range(10):
board_row = []
for j in range(10):
board_row.append(".")
board.append(board_row)
#This is how I want the board to look, but I can't access elements from this board since it's not a list
for i in range(15):
print(i, " ", end ="")
print("\n")
for j in range(12):
row = ((". " + "") * 10) + ((". " + " ") * 5)
print(row, j)
如果您想使用嵌套循环,那么这对您有用。我还建议使用 str.format
来调整您的价值观。
board = []
for i in range(12):
board_row = []
for j in range(15):
board_row.append("{:<3}".format('.'))
board.append(board_row)
或者您可以使用列表理解
board = [["{:<3}".format('.') for j in range(15)] for i in range(12)]
最后显示网格
for i in range(15):
print("{:<3}".format(i), end ="")
print("\n", end='')
for i, x in enumerate(board):
print(''.join(x), i)
#Output
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
. . . . . . . . . . . . . . . 0
. . . . . . . . . . . . . . . 1
. . . . . . . . . . . . . . . 2
. . . . . . . . . . . . . . . 3
. . . . . . . . . . . . . . . 4
. . . . . . . . . . . . . . . 5
. . . . . . . . . . . . . . . 6
. . . . . . . . . . . . . . . 7
. . . . . . . . . . . . . . . 8
. . . . . . . . . . . . . . . 9
. . . . . . . . . . . . . . . 10
. . . . . . . . . . . . . . . 11
我假设您想要的功能是更改特定行的元素值,并且特定 column.You 可以使用多维数组来实现该功能或使用数组中的数组
board=[]
ar_row=[]
for i in range(15):
ar_row.append(str(i)+" ")
board.append(ar_row)
for j in range(12):
row = ((". " + ",") * 10) + ((". " + ",") * 5)
ar_row = row.split(',')
ar_row.append(str(j))
board.append(ar_row)
for element in board:
print ' '.join(element)
上面的代码启动了一个板子,看起来像
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
. . . . . . . . . . . . . . . 0
. . . . . . . . . . . . . . . 1
. . . . . . . . . . . . . . . 2
. . . . . . . . . . . . . . . 3
. . . . . . . . . . . . . . . 4
. . . . . . . . . . . . . . . 5
. . . . . . . . . . . . . . . 6
. . . . . . . . . . . . . . . 7
. . . . . . . . . . . . . . . 8
. . . . . . . . . . . . . . . 9
. . . . . . . . . . . . . . . 10
. . . . . . . . . . . . . . . 11
该板中的每一行都保存为板数组中的一个数组。
我想更改第 0 列和第 10 行的元素的值,只需将其更改为
board[11][0] = your_value
但这可能会改变板在编辑元素值时的视觉外观。所以尝试按照 steven
的建议使用 str.format
我正在尝试构建一个数组,但我似乎做不好:我要么获得我想要的外观,要么获得我想要的功能,但永远不能两者兼得。我是计算机科学的新手,我已经在这上面花了很多时间,请帮助我指明正确的方向。
#tried this and could access elements, but then how do I add the appearance of the list without turning the elements into strings?
board = []
for i in range(10):
board_row = []
for j in range(10):
board_row.append(".")
board.append(board_row)
#This is how I want the board to look, but I can't access elements from this board since it's not a list
for i in range(15):
print(i, " ", end ="")
print("\n")
for j in range(12):
row = ((". " + "") * 10) + ((". " + " ") * 5)
print(row, j)
如果您想使用嵌套循环,那么这对您有用。我还建议使用 str.format
来调整您的价值观。
board = []
for i in range(12):
board_row = []
for j in range(15):
board_row.append("{:<3}".format('.'))
board.append(board_row)
或者您可以使用列表理解
board = [["{:<3}".format('.') for j in range(15)] for i in range(12)]
最后显示网格
for i in range(15):
print("{:<3}".format(i), end ="")
print("\n", end='')
for i, x in enumerate(board):
print(''.join(x), i)
#Output
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
. . . . . . . . . . . . . . . 0
. . . . . . . . . . . . . . . 1
. . . . . . . . . . . . . . . 2
. . . . . . . . . . . . . . . 3
. . . . . . . . . . . . . . . 4
. . . . . . . . . . . . . . . 5
. . . . . . . . . . . . . . . 6
. . . . . . . . . . . . . . . 7
. . . . . . . . . . . . . . . 8
. . . . . . . . . . . . . . . 9
. . . . . . . . . . . . . . . 10
. . . . . . . . . . . . . . . 11
我假设您想要的功能是更改特定行的元素值,并且特定 column.You 可以使用多维数组来实现该功能或使用数组中的数组
board=[]
ar_row=[]
for i in range(15):
ar_row.append(str(i)+" ")
board.append(ar_row)
for j in range(12):
row = ((". " + ",") * 10) + ((". " + ",") * 5)
ar_row = row.split(',')
ar_row.append(str(j))
board.append(ar_row)
for element in board:
print ' '.join(element)
上面的代码启动了一个板子,看起来像
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
. . . . . . . . . . . . . . . 0
. . . . . . . . . . . . . . . 1
. . . . . . . . . . . . . . . 2
. . . . . . . . . . . . . . . 3
. . . . . . . . . . . . . . . 4
. . . . . . . . . . . . . . . 5
. . . . . . . . . . . . . . . 6
. . . . . . . . . . . . . . . 7
. . . . . . . . . . . . . . . 8
. . . . . . . . . . . . . . . 9
. . . . . . . . . . . . . . . 10
. . . . . . . . . . . . . . . 11
该板中的每一行都保存为板数组中的一个数组。
我想更改第 0 列和第 10 行的元素的值,只需将其更改为
board[11][0] = your_value
但这可能会改变板在编辑元素值时的视觉外观。所以尝试按照 steven
str.format