迭代嵌套列表

时间:2015-03-10 17:56:23

标签: python loops nested-lists

我有一个游戏区域(棋盘尺寸为最小1x1,最大10x10) 它由嵌套列表表示,即[['-', '-'], ['-', '-']],其中'-'表示单元格为空,每个列表代表一行。
我可以把船放在那里,因为前[['a', '-'], ['a', '-']]意味着有一艘大小为2的船'a'在第0列垂直竖立。

我需要编写一个代码,以确保该船只出现一次。例如,以下是无效布局:

[['a', '-', 'a'],
 ['a', '-', '-'],
 ['-', '-', '-']]

我知道它会变成一个循环,但我不知道从哪里开始。

3 个答案:

答案 0 :(得分:0)

nested = [['nested', 'list'], ['2nd', 'row']]

for row in nested:
    for item in row:
        print item

您现在正在循环嵌套列表。祝你好运。

答案 1 :(得分:0)

由于这看起来像是家庭作业,我会给你一个起点,但是你需要对此进行扩展。

对于游戏板(或任何矩阵),您需要两个for循环。一个用于x轴,一个用于y轴。假设您正在使用二维数组:

#loop over all rows
for row in array:
    #loop over all columns
    for column in row:
        #process each cell here

答案 2 :(得分:0)

假设您的主板是3x3,无效的主板。

my_board_rows = [['a', 'a', '-'],
                 ['-', 'a', '-'],
                 ['-', 'a', '-']]

my_board_cols = [[col[i] for col in my_board] for i in range(len(my_board))]

您可以使用a循环检查无关的for

row_idx = []
for row, items in enumerate(my_board_rows):
    for item in range(len(items)):
        if items[item] == 'a':
            row_idx.append([row, item])
if len(dict(row_idx)) > 1:
    print('Invalid board!')

列也一样:

col_idx = []
for col, items in enumerate(my_board_cols):
    for item in range(len(items)):
        if items[item] == 'a':
            idx.append([col, item])
if len(dict(col_idx)) > 1:
    print('Invalid board!')

循环遍历行时会打印Invalid board!