পাইথনে লুপের জন্য হ্রাস অসম্ভব?


96

আমি ভুল হতে পারি (শুধু আমাকে জানান এবং আমি প্রশ্নটি মুছে ফেলব) তবে মনে হচ্ছে অজগর সাড়া দেবে না

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

আমি এক্সরেঞ্জ ব্যবহার করার চেষ্টা করেছি এবং এটিও কার্যকর হয়নি। আমি কীভাবে এটি বাস্তবায়ন করতে পারি?


কৌতূহলের বাইরে, আপনি কি এটি কোনও কিছুর জন্য ব্যবহার করছেন? এই কার্যকারিতাটির প্রয়োজনটি বরং অস্বাভাবিক!
ক্যাট্রিয়েল

@ কেটরিএল্লেক্স আমি ডান থেকে বামে কোনও ম্যাট্রিক্সে পুনরাবৃত্তি করতে এটি ব্যবহার করি। আপনার কি আলাদাভাবে প্রস্তাব দেওয়া উচিত যে আমার এটি করা উচিত?
গাল

আপনি এটি চেষ্টা করতে পারেন for i in reversed(mat):যদিও এটি ধীর হতে পারে
ক্যাট্রিয়েল

সীমার সাথে বিপরীত ক্রমে একটি তালিকা মুদ্রণ করে দেখুন , এটি কিছু অন্যান্য সহায়ক তথ্য সরবরাহ করে।
আরএফ

4
দয়া করে একবার দেখুন বিস্তৃত বিপরীতে একটি তালিকা মুদ্রণ করুন , গৃহীত উত্তর এটি খুব স্পষ্টভাবে ব্যাখ্যা করে।
আরএফ

উত্তর:


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

20
বেচা ওপি আসলে চেয়েছিল range(5,-1,-1)। যদিও তিনি সম্ভবত পরীক্ষা এবং ত্রুটি থেকে এটি বুঝতে পারেন।
কোজিরো

43

এটি খুব দেরী হয়েছে, তবে আমি কেবল যুক্ত করতে চেয়েছিলাম যে আরও একটি মার্জিত উপায় আছে: ব্যবহার reversed

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

দেয়:

4
3
2
1
0

4
এ সম্পর্কে মার্জিত কি? আপনি যেভাবে চান তা তৈরির পরিবর্তে তালিকার বিপরীতে সময় ব্যয় করেছেন।
অ্যালেক্সিস

4
@ আলেক্সিস এটির কোনও দাম নেই। সিপিথনে নির্মিত reversed(range)সুন্দর range_reverseঅপ্টিমাইজেশনের কারণে আপনি বিনামূল্যে পান । আমি কিছু দ্রুত বেঞ্চমার্ক করেছি এবং পাইথন ২.7 এবং ৩.৩ উভয়ের মধ্যে step=-1এবং দামের মধ্যে একটি উল্লেখযোগ্য ব্যয়ের পার্থক্য খুঁজে পাইনি reversed()। এছাড়াও দয়া করে নোট করুন যে এই আইডিয়মটি হ্যাপ্কে ব্যবহৃত হয়
কোজিরো

ধন্যবাদ, @ কোজিরো, এটি আকর্ষণীয়। তবে আপনি xrangeযদি আপনার পাইথন ২.7 টেস্ট ব্যবহার না করেন তবে reverseকোনও সাধারণ, ইতিমধ্যে উত্পাদিত তালিকায় কাজ করবে, কোনও রেঞ্জ অবজেক্টে নয়; সুতরাং আপনি কি বলছেন যে কোনও তালিকা দক্ষতার সাথে বিপরীত হতে পারে, বা কেবলমাত্র range/xrangeবস্তু? (আপনি যে হিপক কোডটি লিঙ্ক করেছেন তাতে একটি পাইথন 3 রেঞ্জের বিষয় অন্তর্ভুক্ত রয়েছে)।
অ্যালেক্সিস ২

@ অ্যালেক্সিস আমি এতটা সাহসী হব না যে কোনও পরামর্শই দক্ষতার সাথে বিপরীত করা যায় - এটি আমার পক্ষে যাই হোক না কেন উত্তর দেওয়ার পক্ষে অযোগ্য বলে মন্তব্য করেছে। এটা তোলে বলছে, যদিও, যে heapify কোড থেকে পরিবর্তিত step=-1করা reversed()পাইথন মধ্যে 2.3 এবং 2.4
kojiro

4
reversed(range(10))4মাধ্যমে আউটপুট সম্ভবত পারেন না 0। সম্ভবত আপনি বোঝানো হয়েছে range(5)?
অভিজিৎ সরকার




2

0 এই শর্তটি সত্য হলে 0 শর্তযুক্ত মান হয়, লুপটি কার্যকর করতে থাকবে 1010 প্রাথমিক মান। 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!'

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.