我有一个问题,我希望有一个嵌套的for循环连接一个字符串。由于某种原因,我没有得到正确的输出。有人可以给我一些建议吗?这应该很简单。
newRow = []
matrix = []
for i in range(0,3):
for j in range(0,5):
newRow.append(j)
matrix.append(newRow)
print matrix
python test.py
[[0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4],
[0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4],
[0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4]]
我想要打印...
[[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4]]
答案 0 :(得分:5)
您继续添加相同的newRow
。如果要获得干净的行,则需要在每次迭代时创建一个空行:
matrix = [] newRow = [] <- the same array
for i in range(0,3): matrix = []
newRow = [] <- a new array for i in range(0,3):
for j in range(0,5): instead of for j in range(0,5):
newRow.append(j) newRow.append(j)
matrix.append(newRow) matrix.append(newRow)
当然,有更多pythonic方法可以实现这一点,但我想指出代码的问题是什么。
答案 1 :(得分:3)
如果你想要嵌套循环,你可以这样做:
matrix = [ [ i for i in range(5)] for j in range(3)]
print matrix
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
答案 2 :(得分:1)
matrix = []
for i in range(0,3):
matrix.append(list(range(0, 5)))
甚至:
matrix = [list(range(0, 5)) for i in range(0, 3)]
答案 3 :(得分:1)
你很亲密,只是适当确定范围的问题:
matrix = []
for i in range(0,3):
newRow = []
for j in range(0,5):
newRow.append(j)
matrix.append(newRow)
print matrix
答案 4 :(得分:0)
无论你做什么,
不要这样做
不要这样做
不要这样做:
>>> x = [range(0,5)]*3
>>> x
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
>>> x[0][0] = 'LOL'
>>> x
[['LOL', 1, 2, 3, 4], ['LOL', 1, 2, 3, 4], ['LOL', 1, 2, 3, 4]]
使用列表理解。