Хотя при изучении языка имеет смысл попытаться мыслить в терминах концепций, которые вы хотите существовать, и посмотреть, что работает, в какой-то момент (и если вы хотите, чтобы люди, которые может помочь понять вас, этот вопрос должен прийти перед тем, как задавать вопросы) вам нужно сделать шаг назад и понять концепции, фактически используемые языком.
То, что вы называете «обычным словом», - это не вещь. Когда вы говорите
list2 = [loopdata1, loopdata2, loopdata3]
это , а не список слов loopdata1
, loopdata2
и loopdata3
. Это список, первый элемент которого имеет любое значение, присвоенное переменной с именем loopdata1
; и чей 2-й элемент имеет любое значение, присвоенное переменной с именем loopdata2
; и т.д.
На самом деле список не содержит сведений о том, что его первое значение получено из переменной с именем loopdata1
; он просто хранит свою копию значения. (Когда ваши переменные являются объектными ссылками или похожими, иногда может показаться, что то, что я только что сказал, не соответствует действительности; тот же базовый объект. Таким образом, изменения, сделанные через одну ссылку, можно увидеть через другую, как будто переменные каким-то образом связаны, но на самом деле они являются просто независимыми копиями одной ссылки.)
Не видя больше вашего кода, я не могу знать, какие значения вы фактически присваиваете в своем «варианте 2». Это может быть значение None
или другое значение, которое вы инициализировали для переменных (loopdata1
, loopdata2
и loopdata3
).
Теперь вы говорите, что хотите использовать значения в качестве «имен данных»; что из вашего кода означает, что вы хотите назначить созданный из loopdata1.xls
фрейм данных переменной с именем loopdata1
. Если вы хотите, чтобы это зависело от данных в списке, вы не можете сделать это точно (по крайней мере, ни в коем случае); но вы можете сделать что-то очень близко
dataframes = {}
list1 = ['loopdata1', 'loopdata2', 'loopdata3']
for x in list1:
dataframes[x] = pd.read_excel(x + '.xlsx')