为了账号安全,请及时绑定邮箱和手机立即绑定

Python中的动态变量

Python中的动态变量

暮色呼如 2019-10-12 14:11:05
例如,如何在python中创建具有动态名称的列表for i in range(len(myself)):   list(i) = []我应该用什么代替list(i)?这意味着我想要以下一些名称:list1list2list3...
查看完整描述

2 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

我建议您只使用列表或字典,而不要使用动态变量名。下面的所有版本都导致lists[0],lists[1]等为[],看起来似乎与您想要的足够接近,并且从长远来看将更具可读性/可维护性。(注意:我使用lists而不是list作为变量名,因为后者会覆盖内置list函数,您可能不希望这样做)。


1)具有lists列表列表的版本(数字只是列表的顺序):


lists = [[] for i in range(len(myself))]

2)相同,但是使用for循环而不是列表理解:


lists = []

for i in range(len(myself)):

   lists.append([])

3)版本lists是带有数字作为键的列表的字典(如果您以后要删除某些值,则更加灵活):


lists = {}

for i in range(len(myself)):

   lists[i] = []

关于动态变量名,即像这样的变量,list1而不是lists[1]...认真地说,您可能不应该这样做。它不必要地复杂且难以维护。考虑一下-下个月您将要修改脚本,然后尝试找出变量的list1定义位置,而纯文本搜索将无法做到这一点。真痛苦 

但是,如果你真的想出于某种原因,这是可能的exec- 这里有一些理由不使用它 -或修改locals()- 根据文档坏主意。另请参阅评论以获取更多讨论,以讨论这些东西为什么不是一个好主意,甚至在谈论这些问题时也令人困惑。


查看完整回答
反对 回复 2019-10-12
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

动态变量名很少是一个好主意。最好总是使用字典:


myLists = {"list{}".format(i):[] for i in range(len_i)}

不要list用作变量名,它会隐藏现有的关键字。


查看完整回答
反对 回复 2019-10-12
  • 2 回答
  • 0 关注
  • 450 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信