मैं 100 से 0. को लूप कर रहा हूं। पायथन में मैं यह कैसे कर सकता हूं?
for i in range (100,0)
काम नहीं करता है।
range(100)[::-1]
(जो स्वचालित रूप से अनुवादित है range(9, -1, -1)
) - अजगर में परीक्षण किया गया 3.7
मैं 100 से 0. को लूप कर रहा हूं। पायथन में मैं यह कैसे कर सकता हूं?
for i in range (100,0)
काम नहीं करता है।
range(100)[::-1]
(जो स्वचालित रूप से अनुवादित है range(9, -1, -1)
) - अजगर में परीक्षण किया गया 3.7
जवाबों:
मेरी राय में, यह सबसे पठनीय है:
for i in reversed(xrange(101)):
print i,
reversed(xrange(len(list)))
करता हूं xrange(len(list)-1:-1:-1)
; उत्तरार्द्ध सिर्फ इतने सारे के साथ अजीब लग रहा है -1
।
range
उसी तरह से व्यवहार xrange
करता है जैसे 2.7 में करता है। @hacksoi उपयोग के मामले पर निर्भर करता है, लेकिन मान लीजिए कि आप एक बड़े बफर में पीछे की ओर घूम रहे हैं, मान लीजिए कि यह 10 एमबी है, तो रिवर्स इंडेक्स बनाने से सेकंड लगेगा और 50 एमबी से अधिक मेमोरी का उपयोग होगा। एक उल्टे जेनरेटर का उपयोग करने से मिलीसेकंड लगेगा और केवल कुछ बाइट्स मेमोरी का उपयोग करेंगे।
आपका कोड काम क्यों नहीं किया
आप कोड for i in range (100, 0)
ठीक है, को छोड़कर
तीसरा पैरामीटर ( step
) डिफ़ॉल्ट रूप से है +1
। इसलिए आपको -1
पीछे की ओर बढ़ने के लिए 3 पैरामीटर को सीमा () तक निर्दिष्ट करना होगा ।
for i in range(100, -1, -1):
print(i)
नोट: इसमें आउटपुट में 100 और 0 शामिल हैं।
इसके कई तरीके हैं।
बेहतर तरीका
पायथोनिक तरीके के लिए, पीईपी 0322 की जांच करें ।
यह 100 से 0 (100 और 0 सहित) से प्रिंट करने के लिए पायथन 3 पायथोनिक उदाहरण है।
for i in reversed(range(101)):
print(i)
reversed
पीईपी -322 में कैसे लागू किया जाए, की सिफारिश भ्रामक है, इसलिए यह ध्यान दिया जाना चाहिए कि reversed
यह __reversed__
चलने योग्य पर कॉल करेगा और परिणाम लौटाएगा, और range
वस्तुओं के लिए यह एक आलसी मूल्यांकन किया गया पुनरावृत्ति range_object
है। संक्षेप में: इस पद्धति का उपयोग करना अभी भी आलसी मूल्यांकन है।
for var in range(10,-1,-1)
काम करता है
मैंने एक कोडे एकेडमी एक्सरसाइज में यह कोशिश की (रिवर्स में न तो बिना स्ट्रिंग का उपयोग किए और न ही :: -1)
def reverse(text):
chars= []
l = len(text)
last = l-1
for i in range (l):
chars.append(text[last])
last-=1
result= ""
for c in chars:
result += c
return result
print reverse('hola')
मैं एक ही समय में दो सूचियों के माध्यम से पाश करना चाहता था, इसलिए मुझे नकारात्मक सूचकांक की आवश्यकता थी। यह मेरा समाधान है:
a= [1,3,4,5,2]
for i in range(-1, -len(a), -1):
print(i, a[i])
परिणाम:
-1 2
-2 5
-3 4
-4 3
-5 1
ओह ठीक है सवाल गलत पढ़ा, मुझे लगता है कि यह एक सरणी में पिछड़ जाने के बारे में है? यदि हां, तो मेरे पास यह है:
array = ["ty", "rogers", "smith", "davis", "tony", "jack", "john", "jill", "harry", "tom", "jane", "hilary", "jackson", "andrew", "george", "rachel"]
counter = 0
for loop in range(len(array)):
if loop <= len(array):
counter = -1
reverseEngineering = loop + counter
print(array[reverseEngineering])
global
और time
जन्मजात प्रश्न के लिए प्रासंगिक नहीं है।
आप अजगर में एक कस्टम रिवर्स तंत्र भी बना सकते हैं। जिसका उपयोग कहीं भी उपयोग करने के लिए एक पुनरावृत्ति पीछे की ओर कर सकते हैं
class Reverse:
"""Iterator for looping over a sequence backwards"""
def __init__(self, seq):
self.seq = seq
self.index = len(seq)
def __iter__(self):
return self
def __next__(self):
if self.index == 0:
raise StopIteration
self.index -= 1
return self.seq[self.index]
>>> d = [1,2,3,4,5]
>>> for i in Reverse(d):
... print(i)
...
5
4
3
2
1
a = 10
for i in sorted(range(a), reverse=True):
print i
sorted
करने से पूरी सूची मेमोरी में स्टोर हो जाएगी, है ना? यह व्यर्थ है और बड़े के लिए संभव नहीं है a
।