В вашем примере, p1, p2, p3
являются идентификаторы, но в вашем for
-loop, добавьте имена этих идентификаторов в качестве строки в свой список. Следовательно, вы получаете список строк, а не список разыменованных значений для идентификаторов, соответствующих этим строкам. Это необходимо и желательно.
Идентификаторы - это именованные дескрипторы, используемые в вашем коде для доступа к значениям, которые они ссылаются. В общем, ни один язык программирования не автоматически преобразует строки, которые могут соответствовать некоторым локальным идентификаторам, в фактические ссылки, поскольку в большинстве случаев это непреднамеренное поведение. Подумайте о масштабах и безопасности.
Обычно вы не должны пытаться преобразовывать строки в идентификаторы. В python вы можете сделать это, используя getattr
. Однако я не буду обрисовывать это здесь, потому что, опять же, вы не должны делать этого.
подход лучше для вашего случая, чтобы непосредственно инстанцирует очки в list
или dict
структуры:
# List:
plist = [(20, 50), (70, 80), (100, 140)]
# Dict:
pdict = {
'p1': (20, 50),
'p2': (70, 80),
'p3': (100, 140)
}
В этих случаях, вы можете получить доступ к точкам, например, так:
# For list case:
for i in range(3):
print(plist[i])
# For dict case:
for i in range(3):
print(pdict['p{:d}'.format(i)])
Почему вы не определили их в виде списка, а не независимо друг от друга названных переменных в первую очередь? – TigerhawkT3
* вручную он работает * - как вы писали, ручное действие может стать решением. Покажите, как должно выглядеть окончательное содержимое списка. – RomanPerekhrest