python 대량 생 성 변수 및 할당 작업

1.간단 한 상황:
핵심 은 exec 함수 입 니 다.exec 함 수 는 우리 가 입력 한 코드 문자열 을 실행 할 수 있 습 니 다.exec 함수 의 간단 한 예:

exec ('print "hello world"')
hello world
exec 에'print'hello World'라 는 문자열 을 보 여 줍 니 다.exec 는 문자열 에 있 는 코드 print'hello World'를 실행 합 니 다.이 특성 에 따라 우 리 는 자리 차지 문자 로 변수 에 대한 정 의 를 실현 할 수 있 습 니 다.예 를 들 어:

exec ("temp%s=1"%1)
이 코드 는 exec 에 temp 1=1 을 실행 하 라 는 뜻 입 니 다.문자열 의%s 는'1'로 대 체 됩 니 다.우 리 는 밖에서 순환 을 하나 더 하면 여러 변수 에 대한 정 의 를 실현 할 수 있다.

for i in range(10):
    exec ("temp%s=1"%i)
여기 서 하나의 순환 을 통 해 10 개의 변 수 를 생 성 합 니 다.i 의 변 화 는 0 에서 9 까지 입 니 다.%s 를 변수 i 로 대체 하기 때문에 매번 순환 할 때마다 temp 0,temp 1 에 값 을 부여 합 니 다.
실행 결과:

여러 자리 표시 자 를 바 꾸 려 면 다음 과 같이 쓸 수 있 습 니 다.

exec ("temp%s=%d"%(i,i))
여기 서 각각 문자열,정수 형식 으로 자리 표시 자 를 바 꾸 고 결 과 를 실행 합 니 다.

temp1=1
또:

df_vars = [ 'df_%s_head' %i for i in range(0,10)]
df_vars:

['df_0_head',
 'df_1_head',
 'df_2_head',
 'df_3_head',
 'df_4_head',
 'df_5_head',
 'df_6_head',
 'df_7_head',
 'df_8_head',
 'df_9_head']
다시 예 를 들 면:

 for i in range(8):
     exec('v' + str(i) + ' = ' + str(i))
     print('v' + str(i) + ':', eval('v' + str(i)))
출력 결과:

예:
python 에서 순서 적 인 변수 이름 을 만 들 고 값 을 부여 합 니 다.예 를 들 어

a_1 = []
a_2 = []
a_3 = []
.....
a_100 = []
문자열 을 변수 로 변환 할 수 있 는 함수 exec

for i in range(1,100):
    b = 'a_' + str(i)
    exec(b + '= %r' % [])
2.약간 복잡 한 명명
추출:
D:/MyData/Excel/input/MarketHoliday_2018.xls
D:/MyData/Excel/input/MarketHoliday_2019.xls
。。。
D:/MyData/Excel/input/MarketHoliday_2023.xls

year = [2018,2019,2020,2021,2022,2023] 
file_path = 'D:/MyData/Excel/input/MarketHoliday_'  #  :         
For 순환 에 사용 할 수 있 도록 year 를 dict 로 바 꿔 야 합 니 다.여 기 는 pandas 로 바 꾸 겠 습 니 다.

import pandas as pd
year = pd.Series(year)
year_dict = year.to_dict()
획득:

for i in year_dict:
    exec('Var_'+str(year_dict[i])+'='+'"'+(file_path + str(year_dict[i])+'.xls'+'"'))
    print('Var_'+str(year_dict[i])+':',eval('Var_'+str(year_dict[i])))
최종 결과:

python 동적 생 성 변수 이름 및 할당
오늘 밤 데 이 터 를 처리 할 때 우연히 명명 상의 난점 을 만 났 지만,자동 처 리 를 실현 하기 위해 서 는 입력 매개 변 수 를 하나하나 손 대지 않 겠 습 니 다.저 는 굳이 그것 을 해결 해 야 합 니 다.문 제 는 이 렇 습 니 다.
우선 방법 을 호출 하고 싶 습 니 다.그리고 입력 한 변 수 는 문자열 일 수 있 습 니 다.하지만 문자열 을 직접 입력 하면 안 됩 니 다.
여기에 코드 를 드 립 니 다:

t=['42342lh','234']
s='fgdfhdfhdfh'
exec(s+'=%s'%'t[0]')
print(fgdfhdfhdfh)
for i in range(2):
    m=f'names{i}'
    exec(m+'=%s'%'t[i]')
print(names1)
m 는 스스로 규칙 에 따라 이 sing 을 읽 을 수 있 고 규칙 적 으로 읽 을 수 있 으 며 마지막 으로 m 마다 변수 가 된다 는 것 을 알 수 있다.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기