2009-09-04 1 views
172

में वेरिएबल्स जोड़ें मैं पाइथन सीख रहा हूं और डेटाबेस कनेक्शन बना रहा हूं। डीबी में जोड़ने की कोशिश करते समय, मैं जानकारी से बाहर tuples बनाने और फिर उन्हें डीबी में जोड़ने की सोच रहा हूँ।ट्यूपल

मैं क्या कर रहा हूं: मैं उपयोगकर्ता से जानकारी ले रहा हूं और इसे चर में संग्रहीत कर रहा हूं। क्या मैं इन चरों को एक टुपल में जोड़ सकता हूं? क्या आप कृपया वाक्यविन्यास के साथ मेरी मदद कर सकते हैं?

इसके अलावा अगर कोई ऐसा करने का एक कारगर तरीका है, साझा करें ...

संपादित मुझे इस सवाल का एक सा संपादित करने दें ... मैं केवल टपल डीबी में जानकारी दर्ज करना होगा। एक बार सूचना डीबी में जोड़ दी जाने के बाद, क्या मुझे ट्यूपल को हटा देना चाहिए? मेरा मतलब है कि मुझे अब टुपल की जरूरत नहीं है।

उत्तर

225

टुपल्स अपरिवर्तनीय हैं; आप निर्माण के बाद वे चर शामिल नहीं कर सकते हैं। हालांकि, अगर आप जोड़ सकते हैं या उन्हें काट नई tuples के लिए फार्म:

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

और, ज़ाहिर है, उन्हें मौजूदा मूल्यों से निर्माण:

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

मुझे उपयोगकर्ता इनपुट के बाद डीबी में जोड़ने के लिए केवल इन tuples की आवश्यकता है। इसलिए डीबी को अपडेट करने के बाद मुझे इन tuples को नष्ट करना चाहिए? – amit

+5

आपको डीबी को अद्यतन करने के बाद tuples को नष्ट करने की आवश्यकता नहीं है। यदि वे दायरे से बाहर निकलते हैं तो उन्हें कचरा इकट्ठा किया जाना चाहिए। –

+0

स्ट्रिंग को तोड़ने के बिना टुपल में स्ट्रिंग जोड़ने के लिए https://stackoverflow.com/a/16449189 –

7

यह निम्न जितना आसान है:

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") 

हालांकि, पायथन में tuples, अपरिवर्तनीय हैं ताकि आप एक टपल के लिए वेरिएबल नहीं कर सकते हैं एक बार यह बनाया जाता है।

1

मैं यकीन है कि अजगर में इस के लिए वाक्य रचना है कर रहा हूँ:

user_input1 = raw_input("Enter Name: ") 
user_input2 = raw_input("Enter Value: ") 
info = (user_input1, user_input2) 

एक बार सेट, tuples बदला नहीं जा सकता।

2

के रूप में अन्य उत्तर उल्लेख किया है, यदि आप एक मौजूदा टपल बदल नहीं सकते , लेकिन आप हमेशा एक नया टुपल बना सकते हैं (जो मौजूदा टुपल्स और/या अन्य स्रोतों से कुछ या सभी आइटम ले सकता है)।

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 दृष्टिकोण कुछ और जटिल मामलों में उपयोगी हो सकता है (उदाहरण के लिए जहां नामों का उपयोग भी निर्धारित किया जाता है गणना और गणना के दौरान एक सूची में जोड़ा गया)।

3

"एक बार डीबी में जानकारी जोड़ने के बाद, क्या मुझे ट्यूपल को हटा देना चाहिए? मेरा मतलब है कि मुझे अब टुपल की आवश्यकता नहीं है।"

सं

आम तौर पर, कुछ भी नष्ट करने के लिए कोई कारण नहीं है। हटाने के लिए कुछ विशेष मामले हैं, लेकिन वे बहुत दुर्लभ हैं।

बस एक संकीर्ण क्षेत्र (यानी, एक कार्य परिभाषा या कक्षा में एक विधि समारोह) को परिभाषित करें और वस्तुओं को दायरे के अंत में कचरा इकट्ठा किया जाएगा।

कुछ भी हटाने के बारे में चिंता न करें।

[नोट। मैंने एक ऐसे व्यक्ति के साथ काम किया - वस्तुओं को हटाने की कोशिश करने के अलावा - हमेशा उन्हें साफ़ करने के लिए "रीसेट" विधियां लिख रही थीं। जैसे वह उन्हें बचाने और उन्हें पुन: उपयोग करने जा रहा था। एक मूर्खतापूर्ण गर्भधारण भी। उन वस्तुओं को अनदेखा करें जिन्हें आप अब उपयोग नहीं कर रहे हैं। यदि आप कोड के छोटे-छोटे ब्लॉक में अपने कार्यों को परिभाषित करते हैं, तो आपके पास इसके बारे में सोचने के लिए और कुछ नहीं है।]

161

आप 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) 
+11

इस उदाहरण के मामले में, कोई भी यह कर सकता है: 't =()' फिर 't + = (1,) ' –

29

एक और रणनीति अभी तक का उल्लेख नहीं किया एक सूची में जोड़कर उपयोग कर रहा है, और फिर अंत में एक टपल करने के लिए सूची परिवर्तित:

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

रिटर्न

(0, 1, 2, 3, 4) 

मैं कभी कभी इस का उपयोग जब मुझे एक फ़ंक्शन तर्क के रूप में एक ट्यूपल पास करना होता है, जो अक्सर numpy कार्यों के लिए आवश्यक है।

+1

यह जानना उपयोगी है कि इसके विपरीत, यानी 'सूची (कुछ टुपल)' भी काम करता है। दो ऑब्जेक्ट प्रकार स्पष्ट रूप से परिवर्तनीय हैं – khaverim

+0

वास्तव में अदला-बदली नहीं, मुझे लगता है कि टुपल से सूची में रूपांतरण सूची में सभी तत्वों की प्रतिलिपि बनायेगा, इसलिए इससे बचने के लिए निश्चित रूप से जगह है – gbtimmon