【问题标题】:Creating 2D arrays and input values in it with a while loop?使用while循环创建二维数组并在其中输入值?
【发布时间】:2018-01-24 06:08:57
【问题描述】:

所以,我正在考虑创建一个二维数组,其中行代表城市名称(当然是整数),列代表温度。

days = int(input("Enter days: "))
city = int(input("Enter city: "))
array = [[0]* days]*city
i = 0

使用输入打印数组:

days = 3
city = 3

给了我类似的东西:

[[0,0,0],[0,0,0],[0,0,0]]

但我现在遇到的问题是,如何将值插入到数组中?

当我在处理一维数组时,我使用过:

while i<days:
    array[i] = int(input("temperature: "))
    i+=1

将温度插入到数组中。

array = [1,2,3]

但现在它是 2D,我似乎无法弄清楚。现在,行代表城市,列代表温度。我想要类似的东西。

[[1,2,3],[4,5,6],[7,8,9]]

如何修改我的 while 循环以实现二维数组?

【问题讨论】:

标签: python arrays input


【解决方案1】:

哎呀!列表是 Python 中的可变对象,列表包含对对象的引用。所以当你写array = [[0]* days]*city时,外部列表包含city指向一个用days0初始化的唯一列表的指针。

演示:

>>> array = [[0]* 3]*3
>>> array[0][0] = 1
>>> array
[[1, 0, 0], [1, 0, 0], [1, 0, 0]]

你应该改写array = [ [0] * 3 for i in range(3)]

演示:

>>> array = [ [0] * 3 for i in range(3)]
>>> array[0][0] = 1
>>> array
[[1, 0, 0], [0, 0, 0], [0, 0, 0]]

对于您的问题,只需级联循环:

for c in range(city):
    for day in range(days):
        array[c][day] = int(input("temperature: "))

【讨论】:

    【解决方案2】:

    要遍历二维数组,您必须使用两个嵌套循环。

    i = 0
    j = 0
    while (i < len(array)):
        while(j < len(array[i]):
            array[i][j] = value
            j = j + 1
        j = 0
        i = i + 1
    

    那些循环设置在一个二维数组中的每个时间值。在这种情况下,值可以是您想要的任何值。第一个索引确定数组中的数组,第二个索引选择嵌套数组中的值。在你的情况下,当你有 [[1, 2, 3], [4, 5, 6], [7, 8, 9]], array[1][2] == 6

    这也适用于非对称数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多