【问题标题】:Python how to declare dynamic ( number of arrays )Python如何声明动态(数组数量)
【发布时间】:2022-01-03 14:47:11
【问题描述】:

我想将整数作为输入,并声明许多以 array_names 为起始形式的数组从 0 到该整数 例如:

if I give input as 3 , then in my code there should be 
arr1 = [] ,
arr2 = [] ,
arr3 = []

我试过了,但它给出了语法错误

arr = []
no_of_arrays = int(input())
for i in range(no_of_arrays):
       arr{i} = [] 

它的给予

SyntaxError: invalid syntax

【问题讨论】:

  • 使用列表而不是变量序列。使用[],您实际上创建了一个。这不是一个数组。

标签: python arrays python-3.x list dynamic


【解决方案1】:

虽然从技术上讲,您可以使用exec 在 python 中执行此操作,但不建议这样做。

相反,您应该创建一个列表列表:

arrays = [[] for _ in range(int(input())]

或列表字典:

arrays = {f'arr{i}': [] for i in range(int(input())}

【讨论】:

  • 谢谢@Itay Raveh,但为什么不推荐 exec 你能解释一下吗?
  • @PranavPatil 见this 帖子
【解决方案2】:

没有动态声明原始变量的好方法。
您可以创建字典 d={'Array1':[]....} 或尝试查看 exec 函数 - 出于多种原因不建议这样做:

for i in range(int(input())):
    exec('myArr{}=[]'.format(i))

【讨论】:

【解决方案3】:

您可以通过更新globalslocals 字典来创建变量。

例如:

l = locals()
no_of_arrays = int(input())
for i in range(no_of_arrays):
  l[f"arr{i}"] = []

print(arr0)
print(arr1)

【讨论】:

  • 你能解释一下你使用``` locals() ```的目的是什么吗?实际上我搜索了全局变量和局部变量,但它们与函数中的全局变量和局部变量有关。我无法理解您的解决方案中使用 locals() @Shanavas M
  • locals() 和 globals() 返回本地/全局符号表。创建一个局部/全局变量将分别向 local()/global() 添加一个条目。大多数情况下,反之亦然。向 locals()/globals() 添加一个条目,您将获得一个局部/全局变量。但不建议修改 locals/globals。
猜你喜欢
  • 1970-01-01
  • 2023-02-09
  • 2020-08-07
  • 2022-08-12
  • 1970-01-01
  • 1970-01-01
  • 2014-04-30
  • 2019-12-16
  • 2016-02-01
相关资源
最近更新 更多