2013-10-10 6 views
11

अगर मैं एक सूची है, कहते हैं:पायथन: करने के लिए एक सूची के प्रत्येक तत्व निरुपित एक अलग चर

ll = ['xx','yy','zz'] 

और मैं एक अलग चर के लिए इस सूची के प्रत्येक तत्व प्रदान करना चाहते हैं:

var1 = xx 
var2 = yy 
var3 = zz 

यह जानने के बिना कि सूची कितनी देर तक है, मैं यह कैसे करूँगा? मैंने कोशिश की है:

max = len(ll) 
count = 0 
for ii in ll: 
    varcount = ii 
    count += 1 
    if count == max: 
     break 

मुझे पता है कि varcount एक मान्य तरीका एक गतिशील चर बनाने के लिए नहीं है, लेकिन मैं क्या करने की कोशिश कर रहा हूँ बनाने के var0, var1, var2, var3 ect क्या गिनती है पर आधारित है ।

धन्यवाद!

संपादित करें:

nvm मैं एक नया सवाल शुरू कर देना चाहिए। फ़िर भी सहायता के लिए धन्यवाद!

+17

पृथ्वी पर आप ऐसा क्यों करना चाहते हैं? –

+3

चर केवल नाम हैं। 'Ll [0] के साथ क्या गलत है, [1], ll [2] ... 'आदि? – dansalmo

+0

उपयोगकेस क्या है? ऐसा लगता है कि आपके दृष्टिकोण पर पुनर्विचार क्या हो सकता है – karthikr

उत्तर

9

आपको वापस जाना चाहिए और पुनर्विचार करना चाहिए कि आपको गतिशील चर की आवश्यकता क्यों है। संभावना है, आप सूची के माध्यम से लूपिंग के साथ समान कार्यक्षमता बना सकते हैं, या इसे टुकड़ों में फिसल सकते हैं।

+3

+1 - कभी-कभी, सबसे अच्छा जवाब जवाब देना नहीं है बल्कि यह कहने के बजाय "यह अच्छा नहीं है"। – iCodez

+0

मैं नहीं कह सकता कि मैं असहमत हूं ... – alexis

+0

आप सही हो सकते हैं। मुझे लगता है कि सूचियां एक सरलीकरण थीं। मैं वास्तव में क्या कर रहा हूं अज्ञात लंबाई का डेटाफ्रेम है जिसे मुझे एपीआई कॉल के साथ संगत प्रारूप में पार्स करना है। जिसका अर्थ है कि मैं मूल रूप से डेटाफ्रेम के प्रत्येक "लाइन" के लिए एक शब्दकोश बना रहा हूं। उस स्थिति में, मुझे वैसे भी अलग-अलग शब्दकोशों की एक ही संख्या बनाना होगा, इसलिए मैंने सोचा कि मैं इसके बजाय चर बनाउंगा। मैं इसके बारे में सोच रहा हूं –

10

ऐसा करने का अच्छा विचार नहीं है; आप उन्हें परिभाषित करने के बाद चर के साथ क्या करेंगे?

लेकिन मान आपके पास उचित कारण है, तो यहां अजगर में यह करना है:

for n, val in enumerate(ll): 
    globals()["var%d"%n] = val 

print var2 # etc. 

यहाँ, globals() स्थानीय एक शब्दकोश के रूप में प्रस्तुत नाम स्थान है। संख्या शून्य पर शुरू होती है, जैसे सरणी इंडेक्स, लेकिन आप इसके बजाय 1 से शुरू करने के लिए enumerate() बता सकते हैं।

लेकिन फिर भी: यह संभावना नहीं है कि यह वास्तव में आपके लिए उपयोगी है।

+1

मुझे डाउनवॉटेड किया जा रहा है क्योंकि मैंने वास्तव में सवाल का जवाब दिया था? आ जाओ! – alexis

0

इसके बजाय, इस कार्य करें:

>>> var = ['xx','yy','zz'] 
>>> var[0] 
'xx' 
>>> var[1] 
'yy' 
>>> var[2] 
'zz' 
+0

मुझे यह पसंद नहीं है। अपना नाम रखने के लिए असाइन करने का उद्देश्य। –

2

आइटम की संख्या में परिवर्तन नहीं है, तो आप एक स्ट्रिंग के लिए सूची को परिवर्तित करने और यह चर विभाजित कर सकते हैं।

wedges = ["Panther", "Ali", 0, 360] 
a,b,c,d = str(wedges).split() 
print a,b,c,d 
+0

यह वास्तव में मेरी आवश्यकता के लिए काम करता है - फ़ंक्शन पैरामीटर सूची में व्यक्तिगत सरणी में एक सरणी को परिवर्तित करना – javadba

13

आम तौर पर यह सूची तत्वों/चर की एक बड़ी संख्या के लिए प्रोग्रामिंग उस तरह का उपयोग करने के लिए नहीं सुझाव दिया है।

हालांकि निम्न कथन ठीक काम करता है और अपेक्षा के अनुरूप

a,b,c = [1,2,3] 

यह "destructuring" कहा जाता है।

यह कुछ मामलों में आपको कोड की कुछ पंक्तियों को बचा सकता है, उदा। मैं ए, बी है, ग पूर्णांक के रूप में और सा, sb, अनुसूचित जाति के रूप में उनके स्ट्रिंग मान हैं:

sa, sb,sc = [str(e) for e in [a,b,c]] 

या और भी बेहतर

sa, sb,sc = map(str, (a,b,c)) 
+0

इस उत्तर के लिए धन्यवाद, यही वह है जो मैं यहां देख रहा था। मेरे सामने एक दुभाषिया नहीं था, और जानना चाहता था कि क्या समस्या है, समाधान = "1 + 1 = 2" .split ("=") 'मान्य था, क्योंकि' split() 'एक सरणी देता है 2 मूल्यों से अधिक – JHixson

0

मैं यह सोचते हैं रहा हूँ आप के माध्यम से सूची प्राप्त कर रहे हैं एक एसक्यूएल क्वेरी - आप लंबाई तक क्यों प्रतिबद्ध नहीं हो सकते हैं।इसके साथ यह मेरे लिए स्पष्ट प्रतीत होता है कि आप उन मानों को लेना चाहते हैं और उस नई अधिग्रहित सूची से प्रत्येक मान का उपयोग करके अतिरिक्त SQL आदेश निष्पादित करना चाहते हैं। यदि आप इसे एसक्यूएल परिप्रेक्ष्य से लेते हैं, तो यह अवधारणा का एक तरीका नहीं है, और यदि मैं सही हूं तो मैं वाक्यविन्यास प्रदान करूंगा। हालांकि आपको इस समाधान के साथ अलग परिवर्तनीय नाम बनाने की आवश्यकता नहीं होगी और आप जिस बहुमुखी प्रतिभा की ओर काम कर रहे हैं उसे ढीला नहीं करेंगे। अगर मैं आपके समय को खराब करने के लिए गलत शोर हूं

संबंधित मुद्दे

 संबंधित मुद्दे