[파이썬] for 문 안에서 변수명을 생성하고싶은데 방법이 없을까요 ?
조회수 9636회
connection_list = ['user','password','db']
account_list = ['1','2','3','4']
for i in range(0, 4):
vars()[connection_list[0]+account_list[0]]=connection_list[0]
print(connection_list[i])
위와 같이하면 변수를
user1, password1, db1
user2, password2, db2
user3, password3, db3
user4, password4, db4
이렇게 생성할 줄 알았는데, 그냥 user, password, db 로만 생성되더라구요. 방법이 없을까요 ?
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
4 답변
-
변수명 자체에 번호가 붙어있는 변수 사용하기 어렵습니다. 보통은 그냥 리스트변수를 만들고, 리스트의 숫자인덱스로 접근하는 방법이 더 좋은 방법입니다.
user = [ '', '', '' ] password = [ '', '', '' ] db = [ '', '' ,'' ] user[0], password[0], db[0] = 'me', 'myword', 'mydb' user[1], password[1], db[1] = 'you', 'yourword', 'urdb' user[2], password[2], db[2] = 'she', 'herword', 'herdb' for i in range(3): print(user[i], password[i], db[i])
-
-
다음과 같이 하시면 됩니다
## global 옵션 for i in range(1,5): globals()['user{}'.format(i)] = [] globals()['password{}'.format(i)] = [] globals()['db{}'.format(i)] = []
-
class Example(object): pass if __name__ == '__main__': connection_list = ['user', 'password', 'db'] ex = Example() for cnt, x in enumerate(connection_list): setattr(ex, x+str(cnt), connection_list[0]) print('{} => {}'.format(x+str(cnt), getattr(ex, x+str(cnt))))
이런 방법도 가능합니다.
댓글 입력