提问人:Aeen 提问时间:5/26/2023 最后编辑:001Aeen 更新时间:5/26/2023 访问量:41
在 Python 中循环使用数字模式的变量并附加到列表中的有效方法?
Efficient way to loop through variables with number patterns in Python and append to a list?
问:
所以我的变量是这些:
答案1, 答案2, 答案3, 答案4, ..., 答案20
我想按顺序将它们全部附加到列表中。 有没有一种巧妙的方法可以做到这一点?
我可以只使用扩展并一一编写所有这些,但效率低下
我尝试手动编写变量,但我正在使用的变量超过 20 个
result_list = []
result_list.extend(answer1, answer2, answer3, answer4, ...)
答:
2赞
D4Vinci
5/26/2023
#1
是的,我想你可以这样做:
result_list = []
result_list.extend([globals()[f'answer{i}'] for i in range(1,21)])
这将从全局范围获取值,您还可以使用globals().get(f'answer{i}')
1赞
Alain T.
5/26/2023
#2
如果变量不是全局变量(例如,如果你在函数中执行此操作),则可以使用 locals() 而不是 globals():
这是写与D4Vinci的答案相同的不同方法,但使用局部变量:
*result_list, = map(locals().get,map("answer{}".format,range(1,21)))
评论
result_list = [globals()[f"answer{x}"] for x in range(1,21)]
...但这只是存储值。这听起来像是一个 XY 问题。为什么不一开始就使用列表而不是所有这些变量呢?