【问题标题】:Is it possible to name lists in Python by calling on a string?是否可以通过调用字符串来命名 Python 中的列表?
【发布时间】:2021-05-08 03:30:01
【问题描述】:

我正在尝试为曾经是一个学校项目而现在是一个个人项目(错过最后期限)创建一个准系统列表生成器,但我几乎立刻就碰壁了。

尝试做的时候

def create(list):
   lists.append(str(list))
   str(list) = []

我得到了错误

SyntaxError: cannot assign to function call

这不可能吗?这个想法是让用户键入命令,例如“创建(列表名称)”和“添加(列表名称)(项目名称)”,我想我可能不得不完全改变我的计划。

*also lists.append() 指的是不是二维列表的列表名称列表,尽管我正在考虑使用一个

【问题讨论】:

  • 您的代码不完整。 lists 是在哪里定义的?
  • 这是一个例子。现在不需要定义列表。
  • 不要将参数命名为默认 Python 类型之一,在本例中为“list”。这很可能是因为 PIP 更新之一允许您指定输入参数类型的类型以进行完整性检查。尝试将“列表”重命名为其他名称

标签: python string list syntax-error call


【解决方案1】:

我建议改用字典。
您可以在调用create时创建一个新的键/值对。

另外,请不要隐藏内置函数。这意味着不应使用像 liststr 这样的名称作为变量名或参数。

my_dict = {} # Put this somewhere at the top of your program so all methods can access
def create(l):
    lists.append(str(l))
    my_dict[str(l)] = []

【讨论】:

  • 您的代码不完整。列表是在哪里定义的?
  • @MauroBaraldi Idk,它由 OP 定义。不是我
【解决方案2】:

你得到的错误来自这行代码:

str(list) = []

在赋值的左侧,您必须输入要分配的变量的名称。 str(list) 不是变量名,因此不能以这种方式工作。除此之外,正如@12944qwerty 和@Parad0x13 已经建议的那样,你不应该使用list 作为变量名来防止冲突(如果你分配给list,你正在重新定义list 的含义并且有风险随后无法使用函数list - 直接或间接通过其他函数)。

如果我很好地理解了您的问题,您希望让用户指定要创建的列表的名称,使用该名称创建一个空列表并将该列表名称添加到现有列表的列表中。展示了更实用的解决方案,例如,在 How do I create variable variables? 并在广泛讨论 How can you dynamically create variables via a while loop?。有涉及字典的好解决方案;如果您想使用其他方法(例如,使用execglobalslocals),请阅读链接讨论以了解相关风险和问题。

【讨论】:

  • 谢谢,我对编码很陌生,所以我以后可能会提到这些
猜你喜欢
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多