【问题标题】:Create empty list names using a loop [duplicate]使用循环创建空列表名称[重复]
【发布时间】:2017-03-13 16:04:48
【问题描述】:

初学者的问题。

我想创建几个空列表并命名它们。目前我正在以万无一失但繁琐的方式进行操作,

size_list=[]
type_list=[]
floor_list=[]

我正在努力让它不那么麻烦,

for item in ['size', 'type']:
    item+'_list'=[]

但是,这会导致以下错误,

    item+'_list'=[]
    ^
SyntaxError: can't assign to operator

这个问题可以轻松解决,还是我应该使用其他方法来创建带有名称的空列表?

【问题讨论】:

  • "这个问题可以轻松解决吗?"称它们为更简单的名称,例如 sizestypesfloors :)
  • 哈,好吧。但我想添加“_list”部分。
  • size_list, type_list, floor_list=[], [], []这是你想要的吗?
  • 谢谢尼克,但这似乎是我繁琐方式的“横向化”。
  • 我认为您应该使用字典来跟踪这些内容,但如果您真的打算使用上述方法,请尝试:exec('%s_list = []' % item)

标签: python list loops syntax-error naming


【解决方案1】:

如果您要在单独的变量中跟踪大量数据,请不要依赖相关的变量名称。定义完所有这些变量后,您的代码将如何处理它们?使用字典:

datalists = dict()
for item in ['size', 'type']:
    datalists[item] = []

附录: 通过使用字典,您将拥有一个变量,其中包含不同标签的所有列表值(无论它们是什么)。但也许(从您选择的名称来看)相应列表位置中的值应该放在一起。例如,size_list[0] 可能是 type_list[0] 类型元素的大小等?在这种情况下,更好的设计是将每个元素表示为单个元组、dict 或 自定义类的对象,并拥有所有对象的单个列表。

Thing = namedtuple("Thing", ['size', 'type', 'floor'])
spoon = Thing(size=33, type='spoon', floor='green')

things = []
things.append(spoon)

元组(已命名或以其他方式命名)无法修改,因此这可能不是您需要的。如果是这样,请使用字典而不是元组,或者编写一个简单的类。

【讨论】:

  • 是的,确实x_list[i] 对应于任何x,y in ['size', 'type',..., 'floor'] such that x!=yi=0,1,...,3000y_list[i]。每个i 代表一个物业广告。最终,我想创建一个表格,每个公寓i 在一行上,作为列['size', 'type',..., 'floor']。不确定你的附录是否适合这个?
  • 确实如此。为每个公寓创建一个元组或字典(或自定义Apartment 类的对象)。换一种说法:想想你将如何代表一个公寓,然后简单地列出它们。
  • 谢谢!我会考虑的。
猜你喜欢
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 2018-06-04
  • 2014-03-06
  • 2021-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多