2009-03-24 19 views
6

मैं रेंज (750, 765) के माध्यम से पुनरावृत्ति करने की कोशिश कर रहा हूं और गैर अनुक्रमिक संख्या 769, 770, 774 जोड़ता हूं। यदि मैं रेंज फ़ंक्शन के बाद संख्याओं को जोड़ने का प्रयास करता हूं, तो यह रेंज सूची देता है, फिर व्यक्तिगत संख्याएं:मैं श्रेणी में गैर अनुक्रमिक संख्या कैसे जोड़ सकता हूं?


>>> for x in range(750, 765), 769, 770, 774: print x 
... 
[750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764] 
769 
770 
774 

मैं सभी नंबरों को एक सूची में कैसे प्राप्त कर सकता हूं?

उत्तर

23

श्रेणी में अपनी गैर-अनुक्रमिक संख्याओं को जोड़ने के लिए अंतर्निर्मित + ऑपरेटर का उपयोग करें।

for x in range(750, 765) + [769, 770, 774]: print x 
+0

-1। यह एक अच्छा जवाब नहीं है, न ही यह किसी अन्य के लिए है। itertools.chain() का उपयोग किया जाना चाहिए। 312 जोड़ने के लिए –

+6

? यह शायद ही एक प्रदर्शन हिट है। इसे itertools आयात करने के लिए और अधिक समय की आवश्यकता होगी। यदि यह हजारों श्रेणियों पर एक लूप में किया जा रहा है, तो हाँ, शायद आपको श्रृंखला विधि पर विचार करना चाहिए। –

+0

+1: सरल सूची concatenation। –

2

आप इस के लिए देख रहे हैं:

mylist = range(750, 765) 
mylist.extend([769, 770, 774]) 
+0

मैंने इसे इस तरह से करने के बारे में सोचा, लेकिन मुझे पता था कि एक बेहतर, अधिक संक्षिप्त तरीका होना चाहिए था। हालांकि अच्छा सुझाव है। – adam

+0

हां, स्वीकृत उत्तर छोटा है। मैंने सोचा कि आपको बाद में उपयोग के लिए सूची को स्टोर करने की आवश्यकता है। – Vasil

+0

आप सही हैं, मुझे इसे स्टोर करने की आवश्यकता है। बचाव के लिए समझ की सूची! mylist = [x x श्रेणी में x (750, 765) + [769, 770, 774]] – adam

15

वहाँ यह करने के लिए दो तरीके हैं।

>>> for x in range(5, 7) + [8, 9]: print x 
... 
5 
6 
8 
9 
>>> import itertools 
>>> for x in itertools.chain(xrange(5, 7), [8, 9]): print x 
... 
5 
6 
8 
9 

itertools.chain(), कहीं बेहतर कर रहा है, क्योंकि यह आप मनमाने ढंग से iterables, बजाय सिर्फ सूचियों और सूचियों का उपयोग करने के लिए अनुमति देता है। यह भी अधिक कुशल है, सूची की प्रतिलिपि की आवश्यकता नहीं है। और यह आपको xrange का उपयोग करने देता है, जो आपको लूपिंग करते समय करना चाहिए।

+0

मैं itertools लाइब्रेरी से परिचित नहीं हूं। इसे सुझाव देने के लिए धन्यवाद। मैं इसे पढ़ूंगा। – adam

6

इस पृष्ठ पर अन्य उत्तरों आपको अच्छी तरह से सेवा देंगे। बस एक त्वरित नोट कि Python3.0 में, range एक इटरेटर है (जैसे xrange Python2.x में था ... xrange 3.0 में चला गया है)। यदि आप इसे पायथन 3.0 में करने का प्रयास करते हैं, तो अतिरिक्त करने से पहले श्रेणी पुनरावर्तक से एक सूची बनाना सुनिश्चित करें:

for x in list(range(750, 765)) + [769, 770, 774]: print(x) 
+0

हाँ, और कार्यों के साथ ब्रैकेट का उपयोग करना सुनिश्चित करें! – SilentGhost

+0

आह, धन्यवाद। आपको पता नहीं है कि पार्नन 3.0 में डार्न प्रिंट फ़ंक्शन के कारण मुझे कितनी बार सिंटैक्स त्रुटि मिली है! –

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

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