【问题标题】:Python - Printing arrays using For LoopPython - 使用 For 循环打印数组
【发布时间】:2020-04-06 16:41:46
【问题描述】:

我有一个名为 temp1、temp2、temp3... 等的多个二维数组

temp1 = [[7, 2, 4],
         [5, 0, 6],
         [8, 3, 1]] 

temp2 = [[1, 1, 1],
         [1, 1, 1],
         [1, 1, 1]] 

temp3 = [[2, 2, 2],
         [2, 2, 2],
         [2, 2, 2]] 

我想运行一个 for 循环,它只返回部分数组,具体取决于 i 的范围。我正在考虑类似的事情

for i in range(1,3):
    arrayName = ("temp" + str(i))
    print(arrayName)

其中 print(arrayName) 打印出实际的数组而不是字符串

感谢任何帮助!

【问题讨论】:

    标签: python arrays for-loop multidimensional-array


    【解决方案1】:

    您可以使用exec() 执行此操作。此外,您的 range() 的上限应该是您的最大值加一。上限不包括在内。

    for i in range(1, 4):
        exec(f'print(temp{str(i)})')
    

    输出:

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

    【讨论】:

      【解决方案2】:

      您可以使用eval()。它允许您按名称获取变量。

      for i in range(1, 4):
          current_array = eval(f'temp{i}')
          print(current_array)
      

      但是,我建议您将这部分代码设置为 try/except 块,因为您可能会遇到 NameError 异常。您的代码将如下所示:

      for i in range(1, 4):
          variable_name = f"temp{i}"
      
          try:
              current_array = eval(variable_name)
              print(current_array)
          except NameError:
              print(f"Can not get variable with {variable_name} name")
      

      【讨论】:

        【解决方案3】:

        我注意到这是您的要求:

        ... 其中 print(arrayName) 打印出实际的数组而不是字符串

        如果是这样,您可以使用以下简化的设计模式:

        arrays = [array1, array2, array3]
        for array in arrays: 
            print(array)
        

        并且,在修改您的代码时, print() 将“打印出实际的数组而不是字符串”:

        temp1 = [[7, 2, 4],
                 [5, 0, 6],
                 [8, 3, 1]]
        
        temp2 = [[1, 1, 1],
                 [1, 1, 1],
                 [1, 1, 1]]
        
        temp3 = [[2, 2, 2],
                 [2, 2, 2],
                 [2, 2, 2]]
        
        temps = [temp1, temp2, temp3]
        
        for i in temps:
            print(i)
        

        一些进一步的想法:

        1. 我会避免使用其他评论者建议的 eval() 或 exec() Python 方法。更简单的解决方案是可能的;您没有使用动态执行的具体理由。

        2. 有一种更简洁的方法来重构您的代码,但我提供的上述答案更直接地反映了您的代码结构以避免混淆。

        【讨论】:

          猜你喜欢
          • 2013-02-20
          • 1970-01-01
          • 2018-07-05
          • 2022-01-02
          • 2019-07-03
          • 1970-01-01
          • 1970-01-01
          • 2015-11-01
          相关资源
          最近更新 更多