Python 中 [...] 输出的含义是什么?

6

我将尝试在战舰游戏中放置船只。下面的代码函数应该使用船只数量和棋盘(一个数组的数组)作为参数进行操作。当我在终端中运行时,会得到以下结果:

[[1, [...]], [1, [...]], [2, [...]]]

[...]是什么意思?如何将[...]替换为0到2之间的随机整数?

from random import randint

def print_board(board):
    for row in board:
        print " ".join(row)
def random_row(board):
    return randint(0, len(board) - 1)
def random_col(board):
    return randint(0, len(board[0]) - 1)

def set_the_ships(num_ships,board):
    ship_list = []
    for i in range(num_ships):
        ship_row = random_row(board)
        ship_col = random_col(board)    
        position = [ship_row,ship_list]
        for j in range(i - 1):
            while (position[0] == ship_list[j][0] and position[1] == ship_list[j][1]):
                ship_row = random_row(board)
                ship_col = random_col(board)    
                position = [ship_row,ship_list]
        ship_list.append(position)
    return ship_list

print set_the_ships(3,[[0,0,0],[0,0,0],[0,0,0]])
2个回答

3

...的意思是,存在引用循环。

>>> l = []
>>> l.append(l)
>>> l
[[...]]

他所说的“引用循环”是指该列表包含对自身的引用。 - kindall
3
不仅适用于自身,而且适用于任何已在递归调用中打印的对象,例如考虑:a=[]; b=[a]; a.append(b); c=[a]; print c - lejlot

2

看到这一行:

position = [ship_row,ship_list]

这应该是

position = [ship_row,ship_col]

当您在while循环中重新分配position时,情况也是一样的。

稍后,当您执行ship_list.append(position)时,这会导致ship_list嵌套在自身中,Python将其打印为[...]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接