python中的2维列表(数组?)

时间:2016-01-20 12:37:19

标签: python

我必须创建2个涉及2维列表的函数,以便为基本的Python游戏制作网格:

第一个函数必须接受参数一个int n并返回一个包含n列和n行的2维列表,所有值都为0。

第二个必须在参数中使用2维列表并打印网格但不返回任何内容。

这是我的意思:

def twoDList(x, y):
   arr = [[x for x in range(6)] for y in range(6)] # x = height and y = width
   return arr

def displayGrid(arr):
      for i in range(0, 5):
        print(arr[i][i])

您能否帮我改进有关说明的代码,并帮助我了解如何使用代码显示整个网格?

2 个答案:

答案 0 :(得分:2)

以下是两种不使用第三方库的方法。

创建2D数组的一种简单方法是继续将数组附加到数组:

server {
    listen 80;
    server_name www.myapi.com;

    location / {
        proxy_pass      http://www.commercialapi.com;
        proxy_redirect  http://www.commercialapi.com/ /;
        proxy_read_timeout 60s;

        # Your can customize headers as well.
        proxy_set_header          X-Real-IP       $remote_addr;
        proxy_set_header          X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

在这里,我重新创建了相同的数组(for x in range(10): #width for y in range(10): #height a.append(y) #you can also append other data is you want it to be empty, this just makes it 0-9 arr.append(a) #add the 1-9 a = [] #clear the inner array )10次,所以它效率低下,但重点是你可以使用相同的结构和自定义数据输入来制作自己的2D数组。

获得完全相同的2D数组的另一种方法是列表理解

a

这可能就是你试图用你提供的代码做的事情,正如评论中提到的那样,在语法上是不正确的。

要进行打印,只需调整必须具有2个循环的代码:一个用于x,一个用于y:

arr = [[x for x in range(10)] for y in range(10)]

答案 1 :(得分:0)

我仍然在你的代码中看到错误:

在您的第一个功能中,由于x,y是您的输入,因此您希望在列表理解中使用它们。你没有在你的代码中使用它们

def twoDList(x, y):
    arr = [[x for x in range(6)] for y in range(6)] # x = height and y = width
    return arr

在你的例子中,无论x或y的值是多少,你都得到一个6x6网格。您想使用xy并替换您在那里的固定值(提示:更改您的'6')。 不会为你做那件事,

在您的打印功能中,您可能希望使用两个变量(每个维度一次)作为索引。

另外,不要在这里使用固定值,从你的输入中获取它们(我猜这是功课,所以不会把整个代码放在一起)

def displayGrid(arr):
    for i in range(0, 5):
        for j in range(0, 5):
            print(arr[i][j])