আমি 100 থেকে 0 পর্যন্ত লুপ নেওয়ার চেষ্টা করছি আমি পাইথনে এটি কীভাবে করব?
for i in range (100,0)
কাজ করে না
range(100)[::-1]
(যা স্বয়ংক্রিয়ভাবে অনুবাদ হয় range(9, -1, -1)
) - অজগর ৩.7 এ পরীক্ষিত
আমি 100 থেকে 0 পর্যন্ত লুপ নেওয়ার চেষ্টা করছি আমি পাইথনে এটি কীভাবে করব?
for i in range (100,0)
কাজ করে না
range(100)[::-1]
(যা স্বয়ংক্রিয়ভাবে অনুবাদ হয় range(9, -1, -1)
) - অজগর ৩.7 এ পরীক্ষিত
উত্তর:
চেষ্টা করুন range(100,-1,-1)
, তৃতীয় যুক্তিটি ব্যবহারের বর্ধিতকরণ ( এখানে ডকুমেন্টেড )।
("সীমা" বিকল্পগুলি, শুরু করুন, থামান, পদক্ষেপটি এখানে ডকুমেন্টেড রয়েছে )
আমার মতে, এটি সর্বাধিক পঠনযোগ্য:
for i in reversed(xrange(101)):
print i,
reversed(xrange(len(list)))
করি xrange(len(list)-1:-1:-1)
; পরেরটি দেখতে অনেকগুলি অদ্ভুত দেখাচ্ছে -1
।
range
মতো একই আচরণ করে xrange
। @ হ্যাকসোই ব্যবহারের ক্ষেত্রে নির্ভর করে তবে ধরা যাক আপনি একটি বড় বাফারে পিছন দিকে ঘুরে যাচ্ছেন, ধরা যাক এটি 10 মেগাবাইট, তারপরে বিপরীত সূচকগুলি তৈরি করতে কয়েক সেকেন্ড সময় লাগবে এবং 50 এমবি মেমরিরও বেশি সময় লাগবে। বিপরীত জেনারেটরটি ব্যবহার করতে মিলিসেকেন্ডগুলি লাগবে এবং কেবলমাত্র কয়েক বাইট মেমরি ব্যবহার করতে পারে।
কেন আপনার কোড কাজ করে না
আপনার কোডটি for i in range (100, 0)
ঠিক আছে, বাদে
তৃতীয় পরামিতি ( step
) ডিফল্ট হয় +1
। সুতরাং আপনি -1
পিছনের দিকে যেতে পরিসীমা () এর তৃতীয় প্যারামিটার নির্দিষ্ট করতে হবে ।
for i in range(100, -1, -1):
print(i)
দ্রষ্টব্য: এতে আউটপুটে 100 এবং 0 অন্তর্ভুক্ত রয়েছে।
একাধিক উপায় আছে।
উত্তম উপায়
পাইথোনিক উপায়ে পিইপি 0322 পরীক্ষা করুন ।
এটি পাইথন 3 পাইথোনিক উদাহরণ যা 100 থেকে 0 (100 এবং 0 সহ) মুদ্রণ করে।
for i in reversed(range(101)):
print(i)
reversed
পিইপি -২২২২ এ কীভাবে প্রয়োগ করা যায় তার সুপারিশটি বিভ্রান্তিমূলক, সুতরাং এটি লক্ষ করা উচিত যে এটি পুনরাবৃত্তিযোগ্যদের উপর reversed
কল করবে __reversed__
এবং ফলাফলটি ফিরিয়ে দেবে, এবং range
বস্তুর জন্য এটি একটি অলস মূল্যায়িত range_object
পুনরুক্তিকারী। সংক্ষেপে: এই পদ্ধতিটি ব্যবহার করা এখনও অলস মূল্যায়ন।
আরেকটি সমাধান:
z = 10
for x in range (z):
y = z-x
print y
ফলাফল:
10
9
8
7
6
5
4
3
2
1
পরামর্শ: আপনি যদি কোনও তালিকায় সূচকগুলি গণনা করতে এই পদ্ধতিটি ব্যবহার করেন তবে আপনি 'y' মান থেকে -1 করতে চান, কারণ আপনার তালিকা সূচকগুলি 0 থেকে শুরু হবে।
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
।