Как l oop и хранить значения в независимой переменной в python - PullRequest
3 голосов
/ 08 мая 2020

Я новичок в python, так что это может показаться глупым. Я искал, но решения не нашел.

У меня есть функция в python под названием ExcRng. Что за l oop я могу сделать с функцией, чтобы она сохраняла значения в независимых переменных? Я использую sh не для хранения их в списке, а как независимую переменную.

Я ищу что-то вроде этого.

EDIT * Итак, чтобы уточнить, входные данные от «a» до «n» являются строками. Выходные данные df1, df2 ... dfn являются DataFrames.

List=[a,b,c,d,e...,n]

for i in List:
    df1=ExcRange(i)
    df2=ExcRng(i)
    ...
    dfn=ExcRng(in)

Ответы [ 4 ]

2 голосов
/ 08 мая 2020

Вы можете получить доступ к каждому элементу только по его порядковому номеру. Но если вы хотите иметь независимые переменные, просто сделайте одну достойную для одного элемента списка, вам не нужно для этого l oop.

List = [a,b,c,d,e,f]

#for the first element a
df1 = ExcRange(List[0])
#for the second element b
df2 = ExcRange(List[1])
#etc List[5] = f

Я бы рекомендовал вам всегда использовать список вместо нескольких значений, потому что вы экономите память и ваш код выглядит чище. Вы можете их выучить, они довольно простые

0 голосов
/ 08 мая 2020

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

Метод python exe c позволяет динамически c выполнять код python, который в нашем случае означает запуск строки кода из строки.

Итак, если вы обычно используете a = 1 для объявления / атрибуции переменной с именем a со значением 1, вы можете достичь того же результата с exec("a = 1").

Это позволяет вам использовать форматированные строки для создания переменных из списка имен переменных, заданных в виде строк:

var_names = ["a", "b", "c", "d"]

for var in var_names:
  exec("{} = {}".format(var, var_names.index(var)*2))

print(a)
print(b)
print(c)
print(d)

Как только мы приписываем в переменную индекс имени в списке, умноженный на два, должен получиться результат:

0
2
4
6

Мне было не совсем понятно, что вы хотите сделать, поэтому, прочитав еще раз вопрос, я Создалось впечатление, что вы можете захотеть, чтобы значения, возвращаемые методом ExcRange, хранились в отдельных переменных, а не в списке, и если это так, хорошие новости: python синтаксический сахар здесь, чтобы помочь!

def method():
    return 1, 3, 5, 7

a, b, c, d = method()

print(a) # a = 1
print(b) # b = 3
print(c) # c = 5
print(d) # d = 7

В этом случае метод возвращает список с 4 элементами [1,3,5,7], но если вы присвоите результат ровно 4 переменным, Python распакует его для вас.

Обратите внимание, что если вы назначаете метод одной переменной, эта переменная будет хранить сам список.

a, b, c, d = method()

print(a) # a = [1, 3, 5, 7]
0 голосов
/ 08 мая 2020

В Python функциях может возвращать более одного объекта. Вы можете сделать:

ExcRange (i) {  
 //Your code                                                            
   return df1,df2,,,,,,,,dfn
}

В основном коде: for i in List df1,df2,,,,dfn= ExcRange (i)

0 голосов
/ 08 мая 2020

Попробуйте словарь:

List=[a,b,c,d,e,f]
Dict={}
for c,i in enumerate(List):
    Dict["df"+str(i+1)] = ExcRng(i)

Теперь, когда вы хотите получить свою переменную, вы можете использовать Dict["df1"]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...