जब किसी सरणी के तत्वों को लेफ्ट रोटेट (बाएं घुमाने) करने की आवश्यकता होती है, तो सरणी पर पुनरावृत्ति की जा सकती है, और लेफ्ट रोटेशन की संख्या के आधार पर इंडेक्स को उतनी बार बढ़ाया जा सकता है।
उदाहरण
my_list = [11, 12, 23, 34, 65]
n = 3
print("सूची है: ")
for i in range(0, len(my_list)):
print(my_list[i])
for i in range(0, n):
first_elem = my_list[0]
for j in range(0, len(my_list)-1):
my_list[j] = my_list[j+1]
my_list[len(my_list)-1] = first_elem
print()
print("लेफ्ट रोटेट करने के बाद सरणी: ")
for i in range(0, len(my_list)):
print(my_list[i])
आउटपुट
सूची है: 11 12 23 34 65 लेफ्ट रोटेट करने के बाद सरणी: 34 65 11 12 23
व्याख्या
एक सूची परिभाषित की जाती है, और कंसोल पर प्रदर्शित की जाती है।
लेफ्ट रोटेशन के लिए मान परिभाषित किया जाता है (n=3)।
सूची पर पुनरावृत्ति की जाती है, और सूची में तत्वों के इंडेक्स को बढ़ाया जाता है, और उसी सूची के पिछले इंडेक्स को असाइन किया जाता है।
लूप से बाहर आने के बाद, पहला तत्व (0वें इंडेक्स पर) को अंतिम तत्व को असाइन किया जाता है।
यह आउटपुट कंसोल पर प्रदर्शित होता है।
अधिक कुशल दृष्टिकोण
उपरोक्त विधि O(n×k) समय लेती है जहां k रोटेशन की संख्या है। बेहतर तरीके:
- स्लाइसिंग:
my_list = my_list[n:] + my_list[:n]- O(n) समय - collections.deque:
from collections import deque; d = deque(my_list); d.rotate(-n); my_list = list(d) - मॉड्यूलो ऑपरेटर: नई स्थिति की गणना के लिए
(i + n) % len(my_list)का उपयोग करें
स्लाइसिंग विधि सबसे पायथनिक और पठनीय है। यह एक नई सूची बनाती है बजाय मूल सूची को संशोधित करने के।