私はPythonを学び、データベース接続を作成しています。 DBに追加しようとしているときに、情報からタプルを作成してからDBに追加することを考えています。
私がしていること:私はユーザーから情報を取り、それを変数に格納しています。これらの変数をタプルに追加できますか?あなたは私の構文を助けてもらえますか?
これを行う効率的な方法がある場合も、共有してください...
EDITちょっとこの質問を編集させてください…私はデータベースに情報を入力するのにTupleだけが必要です。情報がDBに追加されたら、タプルを削除する必要がありますか?私はもうタプルを必要としないことを意味します。
タプルは不変です。あなたはそれらが構築後にどの変数を含むかを変更することはできません。しかし、それらを連結またはスライスして新しいタプルを形成することができます。
a = (1, 2, 3)
b = a + (4, 5, 6)
c = b[1:]
そしてもちろん、既存の値からそれらを構築します。
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)
まだ言及されていないもう1つの方法は、リストへの追加を使用して、最後にリストをTupleに変換することです。
mylist = []
for x in range(5):
mylist.append(x)
mytuple = Tuple(mylist)
print mytuple
戻る
(0, 1, 2, 3, 4)
関数引数としてTupleを渡す必要があるときにこれを使うことがあります。
Python 3では、*
を使って、元のTupleから新しい要素とともに新しい要素のTupleを作成することができます。
>>> Tuple1 = ("foo", "bar")
>>> Tuple2 = (*Tuple1, "baz")
>>> Tuple2
('foo', 'bar', 'baz')
それは次のように簡単です:
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のタプルは不変なので、一度作成した変数には追加できません。
「情報がDBに追加されたら、タプルを削除する必要がありますか。タプルはもう必要ないということです。」
いいえ.
一般に、何かを削除する理由はありません。削除するための特別なケースがいくつかありますが、非常にまれです。
狭い範囲(つまり、クラス内の関数定義またはメソッド関数)を定義するだけで、オブジェクトはその範囲の最後にガベージコレクションされます。
何かを削除することを心配しないでください。
[注意。私は、オブジェクトを削除しようとすることに加えて、常にそれらをクリアするために "reset"メソッドを書いている人と一緒に働いていました。彼がそれらを保存してそれらを再利用しようとしていたように。馬鹿げた発想もあります。使用しなくなったオブジェクトは無視してください。関数を十分に小さいコードブロックで定義した場合、これ以上考えるべきことはありません。]
他の答えが指摘したように、あなたは既存のタプルを変更することはできませんが、あなたはいつでも新しいタプルを作成することができます(それは既存のタプルや他のソースからいくつかまたはすべての項目を取ります)。
たとえば、関心のある項目がすべてスカラー変数にあり、それらの変数の名前がわかっているとします。
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())
もちろん、この1つのケースはもっと単純に(x, y, z)
(あるいは名前全体を先行する(23, 45, 67)
)として表現されるでしょうが、maketuple
アプローチはもっと複雑なケース(例えば使用する名前も動的に決定されて計算中にリストします。
私はPythonでこれのための構文がかなり確実である:
user_input1 = raw_input("Enter Name: ")
user_input2 = raw_input("Enter Value: ")
info = (user_input1, user_input2)
一度設定すると、タプルは変更できません。