Как получить char из строки как имя переменной?

Я новичок, просто изучаю python и блуждаю, как получить char, который я получаю из цикла for, как имя переменной, а не фактический char

у меня есть 3 массива

a=[1,2,3]
b=[2,3,4]
c=[3,4,5]

и для цикла

for x in "abc":
    some_function(x)

например это моя функция...

def some_function(array):
    print(sum(array))

но это не работает... я хочу, чтобы x был "a", но не как char, а как переменная a, массив, который плохо дает моей функции и что-то делает

Если у вас есть большое количество таких переменных, вам действительно следует подумать об использовании dict. См. дубликат, чтобы узнать причины и хорошие предложения.

Thierry Lathuille 07.04.2019 07:36
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
291
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вместо использования строки используйте все списки в кортеже следующим образом:

for x in (a, b, c):
    some_function(x)

Теперь some_function вычисляет сумму каждого списка, поэтому результат выглядит следующим образом:

6
9
12

Если вам нужно продолжать использовать строки, создайте словарь для хранения сопоставлений и используйте его в своем цикле:

d = {'a': [1,2,3], 'b': [2,3,4], 'c': [3,4,5]}

def some_function(array):
    print(sum(array))

for x in 'abc':
    some_function(d[x])

# 6
# 9
# 12

И кортежи могут быть немного более эффективными?

TrebledJ 07.04.2019 07:26

Спасибо. конечно, это будет работать, но я хочу сделать это строковым способом... я читаю строку из документа, очень длинную, у меня есть уникальные массивы для каждой буквы, и я не хочу писать оператор if для каждой буквы. нет ли способа сделать это без фактического сравнения, а затем отправки через функцию с предварительно назначенными переменными? нужен более простой способ

LongToeBoy 07.04.2019 07:27

@TrebledJ, да, итерация кортежа быстрее, чем список (хотя и не с большим отрывом). Строительство — это накладные расходы. Я должен подумать о рефакторинге. Спасибо.

Austin 07.04.2019 07:36

@CleverBot, как было предложено в комментарии к вопросу, вы должны использовать словарь для хранения сопоставления. См. ссылку.

Austin 07.04.2019 07:38

Я обновил свой ответ, чтобы показать, как это можно сделать.

Austin 07.04.2019 07:43

yup dict действительно сработал, большое спасибо

LongToeBoy 07.04.2019 16:09

Если вы действительно хотите сделать это с помощью строки "abc", вы можете использовать функцию eval:

for x in "abc":
    some_function(eval(x))

Обычный «правильный» способ сделать это — пройтись по (a, b, c), как упоминали другие, но в Python есть множество забавных способов делать что-то.

Важно отметить, что eval опасен и менее рекомендуется.

Austin 07.04.2019 08:14

Да, я согласен, особенно как новичок в Python, вы не должны привыкать использовать его для таких вещей. Хотя в данном конкретном случае это безвредно, потому что ясно, что единственный код, который может быть оценен, — это a, b или c. Похожий, но менее опасный подход: some_function(globals()[x]) предполагая, что a, b и c являются глобальными переменными. globals() просто возвращает словарь глобальных переменных. Измените на locals(), если a, b и c являются локальными переменными в функции.

almiki 07.04.2019 08:41

Другие вопросы по теме