Python嵌套循环不会像我期望的那样发挥作用

时间:2017-02-27 00:27:28

标签: python arrays

这不是作业问题。与此非常相似的代码是更大项目的基础。我已经有一段时间了,因为我经常使用python。

width = 10
height = 10
board = [[0]*(2*width + 1)]*(2*height + 1)
for k in range(height):
    for j in range(width):
        if (k%2 == 1):
            board[k][j] = 11
result = []
for i in board:
    for j in i:
        result.append(str(j))
        result.append(" ")
    result.append('\n')

print("".join(result))

这是输出,直接复制和粘贴代码:

11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0 
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0 
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0 
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0 
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0 
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0 
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0 
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0 
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0 
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0 
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0 
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0 
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0 
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0 
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0 
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0 
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0 
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0 
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0 
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0 
11 11 11 11 11 11 11 11 11 11 0 0 0 0 0 0 0 0 0 0 0 

我打算让代码做的是第一个嵌套循环应该填充21 x 21数组,其中11代表数组的10 x 10左上角的每个元素。然后第二个嵌套循环应该输出该数组。我究竟做错了什么?谢谢,我很困惑,因为我觉得我已经解决了这个问题一百万次之前还没有达到预期的效果

1 个答案:

答案 0 :(得分:0)

经典问题:[0]*(2*width + 1)创建一个“行”(2*height + 1),然后创建对该单行的[[0]*(2*width + 1)] for _ in range(2*height + 1)] 个引用列表。

要创建多个副本,您可以改为使用它:

filters = {'year': request_data.get("year")}

month = request_data.get("month")
if month:
    filters['month'] = month

queryset =  Expenses.objects.filter(**filters)