programing tip

파이썬에서 즉시 변수 이름 생성

itbloger 2020. 12. 12. 10:11
반응형

파이썬에서 즉시 변수 이름 생성


이 질문에 이미 답변이 있습니다.

루프에서 파이썬에서 변수 이름을 생성하고 값을 할당 할 수있는 방법이 있습니까? 예를 들어

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

반응형