अजगर में छोरों के लिए घटाना असंभव?


94

मैं गलत हो सकता है (बस मुझे बताएं और मैं प्रश्न को हटा दूंगा) लेकिन ऐसा लगता है कि अजगर इसका जवाब नहीं देगा

for n in range(6,0):
    print n

मैं xrange का उपयोग करने की कोशिश की और यह भी काम नहीं किया। मैं इसे कैसे लागू कर सकता हूं?


जिज्ञासा से बाहर, क्या आप किसी भी चीज़ के लिए इसका उपयोग कर रहे हैं? यह इस कार्यक्षमता की आवश्यकता के बजाय असामान्य है!
कैटरील

@katrielalex मैं इसका उपयोग दाईं से बाईं ओर एक मैट्रिक्स पर पुनरावृति करने के लिए करता हूं। क्या कोई अलग तरीका है जो आपको सुझाता है कि मुझे यह करना चाहिए?
गैल

for i in reversed(mat):यद्यपि आप कोशिश कर सकते हैं कि यह धीमी हो सकती है
Katriel

कृपया रेंज के साथ रिवर्स ऑर्डर में एक सूची प्रिंट पर एक नज़र डालें , यह कुछ अन्य उपयोगी जानकारी प्रदान करता है।
आरएफ

1
कृपया एक बार देख लें कि किसी सूची को सीमा के साथ उल्टे क्रम में प्रिंट करें , स्वीकृत उत्तर इसे बहुत स्पष्ट रूप से बताता है।
आरएफ

जवाबों:


217
for n in range(6,0,-1):
    print n
# prints [6, 5, 4, 3, 2, 1]

20
बेटचा ओपी वास्तव में चाहता था range(5,-1,-1)। हालांकि वह शायद परीक्षण और त्रुटि से यह पता लगा सकता है।
कोजिरो

42

यह बहुत देर हो चुकी है, लेकिन मैं सिर्फ यह जोड़ना चाहता था कि एक और अधिक सुंदर तरीका है: उपयोग करना reversed

for i in reversed(range(10)):
    print i

देता है:

4
3
2
1
0

1
इसके बारे में क्या सुंदर है? आप जिस तरह से चाहते हैं, उसे उत्पन्न करने के बजाय किसी सूची को उलटने में समय व्यतीत करते हैं।
एलेक्सिस

5
@alexis इसमें कुछ भी खर्च नहीं होता है। CPython में निर्मित reversed(range)अच्छे range_reverseअनुकूलन के कारण आपको मुफ्त में मिलता है । मैं कुछ त्वरित मानक किया था और के बीच एक महत्वपूर्ण लागत अंतर नहीं पा सके step=-1और reversed()अजगर 2.7 और 3.3 दोनों में। कृपया यह भी ध्यान दें कि इस मुहावरे का उपयोग हिफाक में किया जाता है
kojiro

धन्यवाद, @kojiro, यह दिलचस्प है। लेकिन जब तक आप xrangeअपने पायथन 2.7 परीक्षणों में उपयोग नहीं करते, तब तक reverseएक साधारण, पहले से ही तैयार की गई सूची पर काम करेगा, न कि एक सीमा वस्तु पर; तो आप कह रहे हैं कि किसी भी सूची को कुशलता से उलटा जा सकता है, या सिर्फ range/xrangeवस्तुओं को? (आप जिस लिंक को लिंक करते हैं वह पायथन 3 रेंज ऑब्जेक्ट को शामिल करता है)।
एलेक्सिस

@alexis मैं इतना बोल्ड नहीं होगा कि यह सुझाव दे सकूं कि किसी भी सूची को कुशलता से उलट दिया जा सकता है - वैसे भी मेरे लिए किसी भी तरह का जवाब देना अयोग्य है। यह बता रही है, हालांकि, कि heapify कोड से बदल step=-1करने के लिए reversed()अजगर के बीच 2.3 और 2.4
Kojiro

1
reversed(range(10))संभवतः के 4माध्यम से उत्पादन नहीं कर सकते 0। शायद तुम्हारा मतलब range(5)?
अभिजीत सरकार

13
for n in range(6,0,-1)

यह आपको देगा 6,5,4,3,2,1

से संबंधित

for n in reversed(range(0,6))

आपको देगा 5,4,3,2,1,0




2

0 सशर्त मूल्य है जब यह स्थिति सही होती है, तो लूप निष्पादित होता रहेगा। प्रारंभिक मूल्य है। 1 वह संशोधक है जहां साधारण गिरावट हो सकती है।

for number in reversed(range(0,10,1)):
print number;

1

पार्टी के लिए देर से, लेकिन किसी ने भी अपना स्वयं का निर्माण करने के लिए काम किया है या यह देखना चाहता है कि यह कैसे काम करेगा, यहां वांछित वेतन वृद्धि के आधार पर स्टार्ट-स्टॉप मानों को पुन: व्यवस्थित करने के अतिरिक्त बोनस के साथ कार्य किया गया है:

def RANGE(start, stop=None, increment=1):
    if stop is None:
        stop = start
        start = 1

    value_list = sorted([start, stop])

    if increment == 0:
        print('Error! Please enter nonzero increment value!')
    else:
        value_list = sorted([start, stop])
        if increment < 0:
            start = value_list[1]
            stop = value_list[0]
            while start >= stop:
                worker = start
                start += increment
                yield worker
        else:
            start = value_list[0]
            stop = value_list[1]
            while start < stop:
                worker = start
                start += increment
                yield worker

नकारात्मक वृद्धि:

for i in RANGE(1, 10, -1):
    print(i)

या, स्टार्ट-स्टॉप के साथ उलट:

for i in RANGE(10, 1, -1):
    print(i)

आउटपुट:

10
9
8
7
6
5
4
3
2
1

नियमित वेतन वृद्धि:

for i in RANGE(1, 10):
    print(i)

आउटपुट:

1
2
3
4
5
6
7
8
9

शून्य वृद्धि:

for i in RANGE(1, 10, 0):
    print(i)

आउटपुट:

'Error! Please enter nonzero increment value!'

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.