[python] 튜플에 변수 추가

파이썬을 배우고 데이터베이스 연결을 만들고 있습니다. DB에 추가하려고 할 때 정보에서 튜플을 만든 다음 DB에 추가하려고합니다.

내가하고있는 일 : 사용자로부터 정보를 가져 와서 변수에 저장합니다. 이 변수들을 터플에 추가 할 수 있습니까? 구문을 알려주세요.

또한이 작업을 수행하는 효율적인 방법이 있다면 공유하십시오 …


편집이 질문을 조금 편집 하겠습니다 … DB에 정보를 입력하려면 튜플 만 있으면됩니다. 정보가 DB에 추가되면 튜플을 삭제해야합니까? 더 이상 튜플이 필요하지 않습니다.



답변

튜플은 불변입니다. 생성 후 변수가 포함 된 변수는 변경할 수 없습니다. 그러나, 그것들을 연결하거나 슬라이스하여 새로운 튜플을 형성 할 수 있습니다 :

a = (1, 2, 3)
b = a + (4, 5, 6)  # (1, 2, 3, 4, 5, 6)
c = b[1:]  # (2, 3, 4, 5, 6)

그리고 물론, 기존의 가치로부터 그것들을 구축하십시오 :

name = "Joe"
age = 40
location = "New York"
joe = (name, age, location)


답변

다음과 같은 빈 튜플로 시작할 수 있습니다 t = (). 로 추가 할 수 +있지만 다른 튜플을 추가해야합니다. 단일 요소를 추가하려면 단일 요소로 만드십시오 t = t + (element,). 후행 쉼표가 있거나없는 여러 요소의 튜플을 추가 할 수 있습니다.

>>> t = ()
>>> t = t + (1,)
>>> t
(1,)
>>> t = t + (2,)
>>> t
(1, 2)
>>> t = t + (3, 4, 5)
>>> t
(1, 2, 3, 4, 5)
>>> t = t + (6, 7, 8,)
>>> t
(1, 2, 3, 4, 5, 6, 7, 8)


답변

아직 언급되지 않은 또 다른 전술은 목록에 추가하고 목록을 튜플로 변환하는 것입니다.

mylist = []
for x in range(5):
    mylist.append(x)
mytuple = tuple(mylist)
print mytuple

보고

(0, 1, 2, 3, 4)

때로는 튜플을 함수 인수로 전달해야 할 때 이것을 사용합니다.이 함수는 종종 numpy 함수에 필요합니다.


답변

Python 3에서는 *원래 튜플에서 새 요소와 함께 새 튜플 요소를 만드는 데 사용할 수 있습니다 .

>>> tuple1 = ("foo", "bar")
>>> tuple2 = (*tuple1, "baz")
>>> tuple2
('foo', 'bar', 'baz')


답변

“정보가 DB에 추가되면 튜플을 삭제해야합니까? 더 이상 튜플이 필요하지 않습니다.”

아니.

일반적으로 아무것도 삭제할 이유가 없습니다. 삭제에 대한 특별한 경우가 있지만 매우 드 rare니다.

좁은 범위 (즉, 클래스의 함수 정의 또는 메서드 함수)를 정의하기 만하면 개체가 범위의 끝에서 가비지 수집됩니다.

아무것도 삭제하는 것에 대해 걱정하지 마십시오.

[노트. 나는 객체를 삭제하는 것 외에도 항상 “재설정”방법을 사용하여 지우는 사람과 함께 일했습니다. 그가 그들을 저장하고 재사용하려고했던 것처럼. 또한 어리석은 자존심. 더 이상 사용하지 않는 개체는 무시하십시오. 충분히 작은 코드 블록으로 함수를 정의하면 더 이상 생각할 것이 없습니다.]


답변

다음과 같이 쉽습니다.

info_1 = "one piece of info"
info_2 = "another piece"
vars = (info_1, info_2)
# 'vars' is now a tuple with the values ("info_1", "info_2")

그러나 Python의 튜플은 변경할 수 없으므로 튜플이 만들어지면 변수를 추가 할 수 없습니다.


답변

다른 답변에서 언급했듯이 기존 튜플을 변경할 수는 없지만 항상 새 튜플을 만들 수 있습니다 (기존 튜플 및 / 또는 다른 소스에서 일부 또는 모든 항목을 가져올 수 있음).

예를 들어, 관심있는 모든 항목이 스칼라 변수에 있고 해당 변수의 이름을 알고있는 경우 :

def maketuple(variables, names):
  return tuple(variables[n] for n in names)

예를 들어이 예에서와 같이 사용됩니다.

def example():
  x = 23
  y = 45
  z = 67
  return maketuple(vars(), 'x y z'.split())

물론이 경우는보다 단순하게 표현 될 수 있지만 (x, y, z)(또는 앞서 언급 한 이름까지도 (23, 45, 67)) maketuple접근 방식은 좀 더 복잡한 경우에 유용 할 수 있습니다 (예 : 사용할 이름도 동적으로 결정되어 목록에 추가되는 경우). 계산).