У меня есть функция, которая принимает список аргументов ключевых слов и вычисляет кучу результатов на основе списка ключевых слов, и я использую перечисление для структурирования цикла, чтобы вывести таблицу данных со всеми результатами. Все отлично работает, когда список параметров больше единицы, но когда передается только один параметр, enumerate думает, что хочет разбить это ключевое слово на отдельные буквы. Очевидный способ избежать этого - просто отбросить вызов enumerate и использовать переменную counter, но есть ли способ работать с функцией enumerate, чтобы запретить это поведение?
Ниже приведен пример кода:
import numpy as np
import pandas as pd
x=np.array([1,2,3,4,5])
params = ("x**2","x**3","x**4")
chars = {
"x**2": lambda x: x**2,
"x**3": lambda x: x**3,
"x**4": lambda x: x**4
}
Matrix, names = np.zeros((x.shape[0], len(params)+1)), ["x"]
Matrix[:,0] = x[:]
for counter, param in enumerate(params, start=1):
Matrix[:,counter] = chars[param](x)
names.append(param)
panda_matrix = pd.DataFrame(Matrix)
panda_matrix.columns = names
print(panda_matrix)
и, как я уже сказал, я получаю то, что хочу, когда для перечисления доступно несколько параметров:
, но когда я передаю только один параметр, перечисление думаетон хочет разделить это на кучу отдельных персонажей.
Traceback (most recent call last):
File "C:\Users\1mike\PycharmProjects\libRL\example.py", line 41, in <module>
Matrix[:,counter] = chars[param](x)
KeyError: 'x'
Process finished with exit code 1
Есть ли способ обойти это?