在 Python 中循环使用数字模式的变量并附加到列表中的有效方法?

Efficient way to loop through variables with number patterns in Python and append to a list?

提问人:Aeen 提问时间:5/26/2023 最后编辑:001Aeen 更新时间:5/26/2023 访问量:41

问:

所以我的变量是这些:

答案1, 答案2, 答案3, 答案4, ..., 答案20

我想按顺序将它们全部附加到列表中。 有没有一种巧妙的方法可以做到这一点?

我可以只使用扩展并一一编写所有这些,但效率低下

我尝试手动编写变量,但我正在使用的变量超过 20 个

result_list = []
result_list.extend(answer1, answer2, answer3, answer4, ...)
python-3.x 变量

评论

1赞 001 5/26/2023
result_list = [globals()[f"answer{x}"] for x in range(1,21)]...但这只是存储值。这听起来像是一个 XY 问题。为什么不一开始就使用列表而不是所有这些变量呢?
0赞 Aeen 5/26/2023
谢谢@001,下次会尽量问我的问题!

答:

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)))