【问题标题】:Array loop not returning expected output in Python数组循环未在 Python 中返回预期输出
【发布时间】:2020-09-02 10:41:12
【问题描述】:
pressures = [[5,6,7],
             [8,9,10],
             [11,12,13],
             [14,15,16]]
i = 0
while (i == 2):
    for row in pressures[i:]:
        cycle[i] = row[i]
row[1]

请知道为什么上面的代码只返回数组的最后一个值,即 15

我希望输出是 ;

[ 6,
  9,
 12,
 15]

【问题讨论】:

  • 此代码不返回任何内容,while 循环是空操作,因为 i 不可能为 2。您可能需要包含更多实际代码.
  • 请重新检查/重新格式化您的代码。它不返回任何内容,因为 while 循环从不运行,因为 i != 2.
  • 按照上述建议重新格式化代码时,还请确保每行的缩进级别正确
  • 您可能希望在另一个 for 循环而不是 while 循环中使用 if 语句。

标签: python arrays loops iterator


【解决方案1】:

i = 0 和之后的while (i == 2): 不兼容

【讨论】:

    【解决方案2】:

    如果您想要的只是返回的中间列,那么您可以通过遍历行并获取 1 元素来实现:

    pressures = [[5,6,7],
                 [8,9,10],
                 [11,12,13],
                 [14,15,16]]
    
    
    middle_col = []
    for row in pressures:
        middle_col.append(row[1])
    

    等效地,您可以在一行中执行此操作:

    pressures = [[5,6,7],
                 [8,9,10],
                 [11,12,13],
                 [14,15,16]]
    
    middle_col = [row[1] for row in pressures]
    

    不过,最好的方法可能是使用带有数组索引的 NumPy:

    import numpy as np
    
    pressures = np.array([[5,6,7],
                          [8,9,10],
                          [11,12,13],
                          [14,15,16]])
    
    middle_col = pressures[:, 1]
    

    这将返回一个类似于 np.array([6,9,12,15]) 的 numpy 数组。

    【讨论】:

    • 谢谢这解决了我的问题。但是,如果我需要遍历 I.e 以返回我指定的任何列,而不是一次只返回一个列。这将非常有帮助。谢谢
    • 您只需遍历列的索引。而不是row[1],它将是row[i],其中i 是您的迭代变量。同样适用于pressures[:,i]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2021-11-21
    • 2020-02-08
    • 1970-01-01
    • 2022-07-10
    • 2016-05-11
    相关资源
    最近更新 更多