जब एक पायथन लिस्ट में हमेशा एक ही आइटम को जाना जाता है, तो क्या इसके अलावा इसे एक्सेस करने का कोई तरीका है:
mylist[0]
आप पूछ सकते हैं, 'आप क्यों करना चाहेंगे?'। अकेले में जिज्ञासा। पायथन में सब कुछ करने का एक वैकल्पिक तरीका प्रतीत होता है ।
जब एक पायथन लिस्ट में हमेशा एक ही आइटम को जाना जाता है, तो क्या इसके अलावा इसे एक्सेस करने का कोई तरीका है:
mylist[0]
आप पूछ सकते हैं, 'आप क्यों करना चाहेंगे?'। अकेले में जिज्ञासा। पायथन में सब कुछ करने का एक वैकल्पिक तरीका प्रतीत होता है ।
list
सबसे अच्छा डेटा प्रकार नहीं है?
mylist[0]
सफल होता है जब आपके पास कम से कम एक तत्व होता है, लेकिन शिकायत नहीं करता है यदि आपके पास वास्तव में 30 तत्व हैं। singleitem, = mylist
पुष्टि करता है कि आपको वास्तव में एक तत्व मिला है, अधिक नहीं, कम नहीं।
जवाबों:
अनुक्रम unpacking:
singleitem, = mylist
# Identical in behavior (byte code produced is the same),
# but arguably more readable since a lone trailing comma could be missed:
[singleitem] = mylist
इटरेटर प्रोटोकॉल का स्पष्ट उपयोग:
singleitem = next(iter(mylist))
विनाशकारी पॉप:
singleitem = mylist.pop()
नकारात्मक सूचकांक:
singleitem = mylist[-1]
एकल पुनरावृत्ति के माध्यम से सेट करें for
(क्योंकि लूप चर अपने अंतिम मान के साथ उपलब्ध रहता है जब लूप समाप्त हो जाता है):
for singleitem in mylist: break
कई अन्य (उपरोक्त बिट्स के संयोजन या भिन्नता, या अन्यथा अंतर्निहित पुनरावृत्ति पर निर्भर), लेकिन आपको यह विचार मिलता है।
singleitem = (lambda x: x)(*mylist)
[singleitem] = mylist
।
[]
( for [i, x] in enumerate(iterable):
मुझे बैट्टी ड्राइव करता है) के लिए उपयोग करने में विफल रहता हूं , लेकिन हां, एकल मूल्य अनपैक करने के मामले में, अनुगामी अल्पविराम आसानी से छूट सकता है, और ब्रैकेट का उपयोग पठनीयता के कारणों के लिए उचित है। मैंने इसे उत्तर में जोड़ दिया है। धन्यवाद!
मैं more_itertools
जोड़ूंगा कि पुस्तकालय में एक उपकरण है जो एक आइटम को पुनरावृत्त से लौटाता है।
from more_itertools import one
iterable = ["foo"]
one(iterable)
# "foo"
इसके अलावा, more_itertools.one
अगर एररबल खाली है या एक से अधिक आइटम हैं , तो एक त्रुटि उठाता है।
iterable = []
one(iterable)
# ValueError: not enough values to unpack (expected 1, got 0)
iterable = ["foo", "bar"]
one(iterable)
# ValueError: too many values to unpack (expected 1)
more_itertools
एक तृतीय-पक्ष पैकेज है > pip install more-itertools