Python中的字符串和嵌套for循环

时间:2012-02-19 02:55:14

标签: python

我有一个问题,我希望有一个嵌套的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]]

5 个答案:

答案 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]]

使用列表理解。