【问题标题】:Assign a value to a randomly selected variable [duplicate]为随机选择的变量赋值[重复]
【发布时间】:2018-12-16 15:38:20
【问题描述】:

假设我有 5 个变量,AE

我将它们列在一个列表中,如下所示:

lst = [A, B, C, D, E]

使用 python random 模块,我这样做了:

random.choice(list) = "The Chosen Letter"

但是,我相信您知道,我被“无法分配给函数调用”错误如此粗暴地打了一顿。这不是我要问的,我知道为什么会这样。

我想知道的是,是否确实可以为列表中的随机变量赋值,或者我是否必须编写一个丑陋的解决方法。

对于上下文,它适用于我尝试使用随机生成文本进行编码的动态网格。

【问题讨论】:

  • 只使用随机生成的索引?
  • 你写的代码不是有效的python语法。如果您的意图是让变量名为The Chosen Letter 包含从列表中随机选择的字母,则必须颠倒顺序:the_chosen_letter = random.choice(list)。看看rvalue vs lvalue,了解为什么顺序很重要。请注意,您不能将 "the_chosen_letters" 包裹在引号周围,因为这样您就将其变成了字符串,而不是变量(并且字符串应该是右值,而不是左值)。特别是,您的代码永远不会有效

标签: python list


【解决方案1】:

您还没有将“变量”放入列表中,您已经创建了一个列表,其中有五个引用内存中的相同值,ABC、... 指向。

事实上,一个名字不可能引用另一个名字。名称是指内存中的值,单向且独占。

使用带有字符串键的字典。

设置:

>>> import random
>>> keys = ['A', 'B', 'C', 'D', 'E']
>>> my_vars = dict.fromkeys(keys)                                                                                     
>>> my_vars                                                                                                            
{'A': None, 'B': None, 'C': None, 'D': None, 'E': None}

设置随机键的值:

>>> my_vars[random.choice(keys)] = 'The chosen Letter'                                                                 
>>> my_vars                                                                                                            
{'A': None, 'B': 'The chosen Letter', 'C': None, 'D': None, 'E': None}

访问“变量”

>>> my_vars['B']                                                                                                       
'The chosen Letter'

【讨论】:

    猜你喜欢
    • 2021-04-07
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    相关资源
    最近更新 更多