制作变量列表(或可迭代的)引用变量 [Python]
Making a list (or iterable) of variables refer to the variables [Python]
在 Python(最好是 3.6+)中有没有办法制作一个由变量组成的列表来引用变量本身,而不是它们的值?
一个例子:
a, b, c = 1, 2, 3
l = [a, b, c]
print(l)
# Outputs: [1, 2, 3]
# I want: [a, b, c]
# Not preferred but acceptable: ['a', 'b', 'c']
这可能吗?我正在使用 python 3.8.
回应评论:任何可迭代的都是可以接受的。我实际上有一个类似的问题,关于如何删除一个变量,因为它的名称是一个字符串,但这是另一个问题的主题。不过,这确实与此有关,所以我决定检查一下是否可行。
仍然不确定您的用例是什么,但字典可能很合适:
d = {'a': 1, 'b': 2, 'c': 3}
l = ['a', 'b', 'c']
# or
# l = list(d.keys())
在Python中,变量在内部。通过这些字典,您可以通过将变量的名称作为字符串来访问和删除变量。示例:
a, b, c = 1, 2, 3
names = ['a', 'b', 'c']
for name in names:
print(globals()[name])
print(a)
del globals()['a']
print(a) # a has been removed
对全局变量使用globals()
,对局部变量使用locals()
,对对象成员使用object.__dict__
。
在 Python(最好是 3.6+)中有没有办法制作一个由变量组成的列表来引用变量本身,而不是它们的值?
一个例子:
a, b, c = 1, 2, 3
l = [a, b, c]
print(l)
# Outputs: [1, 2, 3]
# I want: [a, b, c]
# Not preferred but acceptable: ['a', 'b', 'c']
这可能吗?我正在使用 python 3.8.
回应评论:任何可迭代的都是可以接受的。我实际上有一个类似的问题,关于如何删除一个变量,因为它的名称是一个字符串,但这是另一个问题的主题。不过,这确实与此有关,所以我决定检查一下是否可行。
仍然不确定您的用例是什么,但字典可能很合适:
d = {'a': 1, 'b': 2, 'c': 3}
l = ['a', 'b', 'c']
# or
# l = list(d.keys())
在Python中,变量在内部
a, b, c = 1, 2, 3
names = ['a', 'b', 'c']
for name in names:
print(globals()[name])
print(a)
del globals()['a']
print(a) # a has been removed
对全局变量使用globals()
,对局部变量使用locals()
,对对象成员使用object.__dict__
。