파이썬에서 즉시 변수 이름 생성
이 질문에 이미 답변이 있습니다.
- 가변 개수의 변수를 생성하려면 어떻게합니까? 13 답변
루프에서 파이썬에서 변수 이름을 생성하고 값을 할당 할 수있는 방법이 있습니까? 예를 들어
prices = [5, 12, 45]
내가 원하는
price1 = 5
price2 = 12
price3 = 45
나는 수동으로 할당하는 대신 루프 또는 뭔가에서이 작업을 수행 할 수 있습니다 price1 = prices[0]
, price2 = prices[1]
등
감사합니다.
편집하다
많은 사람들이 내가 이것을 요구하는 이유를 적 으라고 제안했습니다. 첫째,리스트를 사용하는 것보다 편리하다고 생각했던 때가 있었는데 ... 정확히 언제인지는 모르겠지만 중첩 수준이 많을 때 이것을 사용하려고 생각한 것 같습니다. 예를 들어, 목록 목록이있는 경우 위의 방법으로 변수를 정의하면 중첩 수준을 줄이는 데 도움이 될 수 있습니다. 둘째, 오늘 저는 Pytables 사용법을 배우려고 할 때 이것을 생각했습니다. 방금 Pytables를 보았는데 테이블 구조를 정의 할 때 열 이름과 유형이 다음과 같은 방식으로 설명된다는 것을 알았습니다.
class TableFormat(tables.IsDescription):
firstColumnName = StringCol(16)
secondColumnName = StringCol(16)
thirdColumnName = StringCol(16)
100 개의 열이있는 경우 각 열의 이름을 명시 적으로 입력하는 것이 많은 작업으로 보입니다. 그래서 이러한 열 이름을 즉석에서 생성하는 방법이 있는지 궁금했습니다.
정말 즉석에서 만들고 싶다면, globals()
또는 locals()
생성하려는 네임 스페이스에 따라 반환되는 dict에 할당 할 수 있습니다 .
globals()['somevar'] = 'someval'
print somevar # prints 'someval'
그러나 나는 그것을 권장하지 않습니다. 일반적으로 전역 변수는 피하십시오. locals()
자주 사용하면 실제로하는 일이 흐려집니다. 대신 자신 만의 사전을 만들고 할당하십시오.
mydict = {}
mydict['somevar'] = 'someval'
print mydict['somevar']
파이썬 선을 배우십시오; 이것을 실행하고 잘 그럭.
>>> import this
많은 요점이 보이지는 않지만 여기에 있습니다.
for i in xrange(0, len(prices)):
exec("price%d = %s" % (i + 1, repr(prices[i])));
개체에서 다음을 사용하여이를 달성 할 수 있습니다. setattr
>>> class A(object): pass
>>> a=A()
>>> setattr(a, "hello1", 5)
>>> a.hello1
5
나는 당신의 문제를 가지고 있으며 여기에 내 대답이 있습니다.
prices = [5, 12, 45]
list=['1','2','3']
for i in range(1,3):
vars()["prices"+list[0]]=prices[0]
print ("prices[i]=" +prices[i])
따라서 인쇄하는 동안 :
price1 = 5
price2 = 12
price3 = 45
또 다른 예 는 사전을 사용한다는 점에서 다른 답변 의 변형입니다 .
>>> vr={}
... for num in range(1,4):
... vr[str(num)] = 5 + num
...
>>> print vr["3"]
8
>>>
조금 길어, 작동합니다 ...
prices = [5, 12, 45]
names = []
for i, _ in enumerate(prices):
names.append("price"+str(i+1))
dict = {}
for name, price in zip(names, prices):
dict[name] = price
for item in dict:
print(item, "=", dict[item])
참고URL : https://stackoverflow.com/questions/4010840/generating-variable-names-on-fly-in-python
'programing tip' 카테고리의 다른 글
ASP.NET MVC로 로그온 시스템을 만들 수 있지만 MembershipProvider를 사용하지 않을 수 있습니까? (0) | 2020.12.12 |
---|---|
정규식 일치 수 (0) | 2020.12.12 |
Git을 사용하여 두 가지 브랜치에 커밋 푸시 (0) | 2020.12.12 |
Haskell 경량 스레드 오버 헤드 및 멀티 코어에서 사용 (0) | 2020.12.12 |
SQL Server : 여러 행을 하나의 행으로 결합 (0) | 2020.12.12 |