如何修改Python循环生成棋盘格模式的二维列表?
生成棋盘格模式的二维列表修改方案
你的问题出在没有根据行号的奇偶性调整列的修改规则,导致所有行的起始模式完全一致。以下是两种可行的修改方法:
方法一:根据行号调整列起始索引
直接修改内层循环的起始位置,让偶数行和奇数行的修改列错开:
for i in range(len(table)): # 偶数行从索引0开始,奇数行从索引1开始 start_col = 0 if i % 2 == 0 else 1 for j in range(start_col, len(table[i]), 2): table[i][j] = 0
原理:偶数行(i为0、2、4...)保留原逻辑,把偶数索引设为0;奇数行(i为1、3...)改成从索引1开始,每隔2列设为0,刚好和上一行的模式相反。
方法二:通过行号+列号的奇偶性判断
这种方法逻辑更直观,直接根据每个位置的行号与列号之和的奇偶性来修改:
for i in range(len(table)): for j in range(len(table[i])): # 行号+列号为偶数时设为0,奇数时保持1(原列表全为1) if (i + j) % 2 == 0: table[i][j] = 0
原理:棋盘格的核心规律就是相邻行的同列位置值相反,用i+j的奇偶性可以精准判断每个位置应该是0还是1,适用于任意行列数的二维列表。
原代码的问题在于所有行都使用相同的列修改规则,没有实现行与行之间的模式交替,所以无法得到目标棋盘格效果。
内容的提问来源于stack exchange,提问作者Paolo Carossa
相关产品推荐
相关产品推荐

