我无法找到问题的正确答案。 所以这笔交易是这样的: 我需要打印一个2D数组,但每个单元格都是一个大小为2的列表。此列表中的第一个值是隐藏或看到的“H”或“S”。第二个是实际值。 我需要像这样打印每一行:格式:(“%-2s%-2s ...%-2s”),要打印的内容:如果第一个值为'H',则打印'H',否则打印第二个值。< / p>
请帮我完成这项任务,谢谢!
我正在尝试下一个代码:
print ' ' , ''.join('%-2s ' % i for i in range(self.gameBoard.width))
for i in range(self.gameBoard.height):
print '%-2s'%i, ''.join('%-2s ' % v[1] for v in self.gameBoard.Matrix[i] if v[0] == 'S')
“i”代表行号。
答案 0 :(得分:2)
您的解决方案似乎有效,您只需要更改最后一行:
print '%-2s'%i, ''.join('%-2s ' % v[1] for v in self.gameBoard.Matrix[i] if v[0] == 'S')
为:
print '%-2s'%i, ''.join('%-2s ' % ((v[1] if v[0] == 'S' else 'H') for v in self.gameBoard.Matrix[i]))
答案 1 :(得分:2)
最好使用enumerate直接迭代行
print ' ' , ''.join('%-2s ' % i for i in range(self.gameBoard.width))
for i, row in enumerate(self.gameBoard.Matrix):
print '%-2s'%i, ''.join('%-2s '%(v[1] if V[0]==S else 'H') for v in row)
最好使用format
代替%
格式
print ' ' , ' '.join(format(i, '2') for i in range(self.gameBoard.width))
for i, row in enumerate(self.gameBoard.Matrix):
print '%-2s'%i, ' '.join(format(v[1] if V[0]==S else 'H', '2') for v in row)
答案 2 :(得分:1)
你的意思是:
$a = [['H',1], ['H',2],['S',3],['H',4], ['S',5]]
$print [k if k=='H' else v for k,v in a]
['H', 'H', 3, 'H', 5]