【发布时间】:2016-12-12 00:37:57
【问题描述】:
基本上,我正在考虑一种存储数据的方法。如果 Python 有表的话,就像一个表。例如,我有一个名称列表,我想将这些名称与更改的值相关联,然后在表达式中操作它们,最好是通过迭代。下面是一个例子:三个名称“foo”、“bar”和“baz”被声明、递减、然后更改并再次递减(在我的项目中,我有十几个名称的列表,但原理是一样的)。
方式一:变量和if-elif-else:
foo = 123
bar = 456
baz = 789
def chooser(n):
if n == 0:
return foo - 1
elif n == 1:
return bar - 1
elif n == 2:
return baz - 1
for i in range(3):
print chooser(i)
foo = 1
bar = 2
baz = 3
for i in range(3):
print chooser(i)
方式二:字典
data = {'foo':123, 'bar':456, 'baz':789}
for i in ('foo', 'bar', 'baz'):
print data[i] - 1
data['foo'] = 1
data['bar'] = 2
data['baz'] = 3
for i in ('foo', 'bar', 'baz'):
print data[i] - 1
但是,我强烈怀疑有一种更好、更 Python 的方式来做同样的事情。如果有的话,社区可以提供更多的替代方案吗?
【问题讨论】:
-
"显然它根本不起作用" 怎么样?应该工作得很好。请解释一下您到底想要什么,以及有什么问题。当新值分配给原始变量时,您是否希望更新列表或字典中的值?
-
这么多问题:你想让你的函数做什么?您正在寻找哪些输入和输出示例?你的
for循环有什么意义?它只会每次执行一次,因为您在第一次迭代时return某事。 -
选择器的输入是什么?预期的输出是什么?
-
也许我们在这里寻找
yield? -
如果你使用一个更现实的例子会更好 - 这将总是返回 foo ^ 2。