2010-06-17 17 views
5

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

for x,y,z in points: 
    pass 
    # do something with x y or z 

क्या होगा यदि आप केवल पहले चर, या पहले और तीसरे का उपयोग करना चाहते। क्या अजगर में कोई छोड़ने वाला प्रतीक है?

उत्तर

8

क्या आपको कुछ ऐसे चर को छूने से नहीं रोक रहा है, जिनमें आप रुचि नहीं रखते हैं? वेरिएबल को इंगित करने के लिए पाइथन में अंडरस्कोर का पारंपरिक उपयोग है जिसमें आप रुचि नहीं रखते हैं। उदा .:

for x, _,_ in points: 
    print(x) 

आपको यह समझने की आवश्यकता है कि यह सिर्फ एक सम्मेलन है और प्रदर्शन पर कोई असर नहीं है।

+1

यह एक उदाहरण था। आम तौर पर मेरे पास टुपल में 4 चर हो सकते हैं, और मैं उनके लिए अच्छे नए चर नामों का आविष्कार करने के लिए बहुत आलसी हूं। –

+2

@ पीटर: आपके पास उन चर के लिए * अच्छे * नाम नहीं हैं जिन्हें आप उपयोग नहीं करेंगे। – SilentGhost

+1

वास्तव में '_' शायद कम से कम वर्णनात्मक चर नाम है जिसे आप संभवतः साथ आ सकते हैं ;-) या यह होगा, अगर यह इस सम्मेलन के लिए नहीं था। –

7

हाँ, अंडरस्कोर:

>>> a=(1,2,3,4) 
>>> b,_,_,c = a 
>>> b,c 
(1, 4) 

यह ठीक न सिर्फ एक सम्मेलन 'लंघन', है।

>>> _ 
3 
+0

'_' के बारे में जानकारी दिलचस्प है। तो 'ए, ए, ए = (1, 2, 3) 'वास्तव में काम करता है ... – Dario

+0

@ डारियो मैं इसकी अनुशंसा नहीं करता, क्योंकि यह पढ़ना मुश्किल है और – unbeli

+0

में आप किस मूल्य की अपेक्षा कर रहे हैं हां, मैं उस कारण से * इसका उपयोग भी नहीं करता, लेकिन मैंने सोचा कि पाइथन इसलिए इसे अस्वीकार कर देगा। – Dario

5

एक आम तरीका है यह करने के लिए अप्रयुक्त चर के लिए अंडरस्कोर उपयोग करने के लिए है:

for x, _, z in points: 
    # use x and z 

यह वास्तव में कुछ भी आप क्या लिखा है से अलग नहीं करता है को रेखांकित चर अभी भी मूल्य सौंपा जाता है। अंडरस्कोर किसी अन्य की तरह एक सामान्य चर है। लेकिन यह लोगों को आपके कोड को पढ़ने से पता चलता है कि आप चर का उपयोग करने का इरादा नहीं रखते हैं।

इंटरैक्टिव प्रॉम्प्ट में ऐसा करने की सलाह नहीं दी जाती है क्योंकि _ का एक विशेष अर्थ है: अंतिम रन स्टेटमेंट/अभिव्यक्ति का मान।

3

हालांकि यह रूप में चालाक आप के लिए पूछ रहे हैं के रूप में नहीं है, शायद यह केवल टपल सूचकांक आप के बारे में देखभाल करने के लिए सार्थक नाम देने के अपने इरादों के लिए सबसे अधिक सुपाठ्य है:

for each in points: 
    x = each[0] 
    # do something with x 
0

अजगर 3.1 आप कर सकते हैं में एक टुपल असाइनमेंट के बाईं ओर एक पहचानकर्ता के सामने एक तारांकन का उपयोग करें और जो भी बचा है उसे चूसना होगा। यह निर्माण ट्यूपल आइटमों की एक चर संख्या को संभालेगा।

>>> tpl = 1,2,3,4,5 
>>> a, *b = tpl 
>>> a 
1 
>>> b 
>>> (2, 3, 4, 5) 

या में विभिन्न आदेशों और संयोजन:

>>> a, *b, c = tpl 
>>> a 
1 
>>> b 
(2, 3, 4) 
>>> c 
5 

तो, मामले के बारे में आप, जहाँ आप केवल पहले आइटम में रुचि रखते हैं, का उपयोग पूछा के लिए * _ चूसने के लिए इस तरह और शेष वस्तुओं को त्यागें जिनकी आपको परवाह नहीं है:

>>> a, *_ = tpl 
>>> a 
1 
संबंधित मुद्दे