Python:如何根据用户的输入声明全局零数组?

时间:2018-01-31 16:09:37

标签: python arrays indexing initialization global-variables

对于我的程序,用户可以输入特定的n。

根据那个n,我需要创建一个大小为零的n个桶的全局数组,因为我需要在其他函数中使用这个数组+增加桶中的元素,这又取决于某些条件。

inv = []   # global var counts all inversion at level n
order = [] # global var counts all ordered elements at level n

def foo():
    # Using order and inv here 

def main():
    # Save Input in variable in n
    n = int(raw_input())
    order = [0]*n
    inv = [0]*n

我该怎么做?我总是得到一个IndexError告诉我列表索引超出范围。谢谢!

1 个答案:

答案 0 :(得分:1)

有两种方法可以做到这一点 - 全局与参数。

使用global关键字可以访问函数中的orderinv的全局实例。

inv = []   # global var counts all inversion at level n
order = [] # global var counts all ordered elements at level n

def foo():
  # Using order and inv here
  global order
  global inv


def main():
  global order
  global inv
  # Save Input in variable in n
  n = map(int, raw_input().split())
  order = [0]*n
  inv = [0]*n

我建议这样做的方法是在main函数中声明orderinv,然后将它们作为参数传递给foo()或任何其他需要它们的函数。< / p>

def foo(list_order, list_inv):
  # Using order and inv here

def main():
  # Save Input in variable in n
  n = map(int, raw_input().split())
  order = [0]*n
  inv = [0]*n
  foo(order, inv)