Home › Hindi › String Slicing Hindi में
Python String Slicing — [start:stop:step] पूरा समझो
🌐 यह page Hindi में है · Read the English basics guide →
[start:stop:step]Negative indexReverse + palindromeOut-of-range सुरक्षित है
Slicing का syntax और सबसे ज़रूरी नियम
Slice का मतलब है: s[start:stop:step] — start से शुरू, stop से पहले रुको, step कदम से चलो। तीनों optional हैं।
s = "PyDebug"
# 0123456
print(s[0]) # P — एक index
print(s[2]) # D
print(s[2:5]) # Deb — index 2, 3, 4 (5 शामिल नहीं)
print(s[:4]) # PyDe — start छोड़ा तो 0 से
print(s[4:]) # bug — stop छोड़ा तो अंत तक
print(s[:]) # PyDebug — shallow copy बनती है
print(len(s)) # 7
दो नियम हमेशा याद रखो: stop exclusive है, और slice कभी IndexError नहीं देता — range बाहर चली जाए तो Python चुपचाप जितना हो सकता है उतना दे देता है:
s = "PyDebug"
print(s[4:100]) # bug — error नहीं!
print(s[50:]) # '' — खाली string
print(s[0]) # P
print(s[100]) # ❌ IndexError — single index पर error आता है
यह फर्क बहुत काम आता है: slicing से length check किए बिना सुरक्षित code लिखा जा सकता है, पर single index पर हमेशा bounds सोचने पड़ते हैं।
Negative index — अंत से गिनती
s = "PyDebug"
print(s[-1]) # g — आखिरी character
print(s[-3]) # e
print(s[-3:]) # ebug — आखिरी 3 characters
print(s[:-3]) # PyDe — आखिरी 3 छोड़कर
print(s[-1:-4]) # '' — खाली! क्योंकि दिशा आगे है, पीछे नहीं
print(s[-4:-1]) # ebu — सही दिशा: -4 से -1 तक
वह s[-1:-4] वाला जाल समझो: slice हमेशा बाएँ से दाएँ चलता है जब तक step negative न हो। -1 यानी 6 से -4 यानी 3 तक आगे नहीं बढ़ा जा सकता, इसलिए result खाली है।
step — skip करना और उल्टा करना
s = "PyDebug"
print(s[::2]) # PDbg — हर दूसरा character
print(s[1::2]) # yeu
print(s[::-1]) # gubeDyP — पूरी string उल्टी
print(s[::-2]) # gueyD — उल्टी + हर दूसरा
print(s[5:1:-1]) # ugeD — index 5 से 2 तक, पीछे की तरफ
[::-1] Python में string (या list) उल्टा करने का standard तरीका है — पढ़ने में साफ़ और C-level पर तेज़। reversed(s) एक iterator देता है, इसलिए उसके साथ ''.join(...) लगाना पड़ता है।
रोज़ काम आने वाले patterns
word = "level"
# palindrome check
print(word == word[::-1]) # True
# पहला और आखिरी character
print(word[0], word[-1]) # l l
# extension हटाना
filename = "report.final.csv"
print(filename[:-4]) # report.final
name, ext = filename.rsplit(".", 1) # बेहतर तरीका
# शुरुआत/अंत काटना
line = " hello\n"
print(line.strip()) # 'hello' — slice नहीं, strip() use करो
# हर word अलग
sentence = "python is fun"
print(sentence.split()) # ['python', 'is', 'fun']
print([w[::-1] for w in sentence.split()]) # हर word उल्टा
ध्यान रहे: whitespace हटाने के लिए slice मत लिखो — strip(), lstrip(), rstrip() बने हुए हैं और सही काम करते हैं।
5 common गलतियाँ
- stop को शामिल मान लेना —
s[0:3]तीन characters देता है (index 0, 1, 2), चार नहीं। - Negative slice में दिशा भूलना —
s[-1:-4]खाली है;s[-4:-1]याs[::-1]लिखो। - String बदलने की कोशिश —
s[0] = 'X'परTypeError: 'str' object does not support item assignment। String immutable है; नई string बनाओ:s = "X" + s[1:]। - Index और slice में length का भ्रम —
len(s)है 7, पर आखिरी index 6 है।s[len(s)]हमेशा IndexError देगा;s[len(s)-1]याs[-1]लिखो। - List slice = copy, पर अंदर के items वही —
b = a[:]shallow copy है। Nested list हो तो अंदर की lists share होती रहेंगी;copy.deepcopyचाहिए।
🛠️ Practice करो (free, browser में)
पढ़ना काफी नहीं — यही bug खुद fix करके देखो। नीचे के problems browser में ही चलते हैं, कोई install नहीं, कोई login नहीं।
- Slicing doesn't include the end index — सबसे common slice गलती।
- Negative indexing — -1 यानी आखिरी item।
- List slicing with step — वही नियम list पर।
अक्सर पूछे जाने वाले सवाल
Python में string उल्टा कैसे करें?
s[::-1] लिखो — यह standard तरीका है, पढ़ने में साफ़ और तेज़। reversed(s) एक iterator देता है, इसलिए उसके साथ ''.join(reversed(s)) लगाना पड़ता है।
Slice IndexError क्यों नहीं देता?
क्योंकि slicing का नियम है 'जितना मौजूद है उतना दे दो'। s[4:100] बाहर चला जाए तो भी सिर्फ उपलब्ध characters लौटता है, और पूरी तरह बाहर हो तो खाली string देता है। Single index (s[100]) पर नियम नहीं लगता — वहाँ IndexError आता है।
s[-1:-4] खाली क्यों है?
क्योंकि slice default दिशा बाएँ से दाएँ है, और -1 (index 6) से -4 (index 3) तक आगे बढ़ा नहीं जा सकता। पीछे की तरफ चलने के लिए step negative चाहिए: s[-4:-1] या s[::-1]।
Palindrome कैसे check करें?
word == word[::-1] — बस एक line। Case या spaces भी मायने रखते हों तो पहले साफ़ कर लो: cleaned = word.lower().replace(' ', '') फिर cleaned == cleaned[::-1]।