Skip to content

SLICE WITH NEGATIVE INDICES

Python
#!/usr/bin/env python3
"""
SLICE WITH NEGATIVE INDICES
Access elements from the end of sequences
"""

print("=== Negative Index Basics ===")
data = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

print(f"List: {data}")
print(f"Last element [-1]: {data[-1]}")
print(f"Second to last [-2]: {data[-2]}")
print(f"Third from end [-3]: {data[-3]}")

print("\n=== Slice from End ===")
# Last 3 elements
print(f"Last 3 elements [-3:]: {data[-3:]}")

# Last 5 elements
print(f"Last 5 elements [-5:]: {data[-5:]}")

# Everything except last 2
print(f"All but last 2 [:-2]: {data[:-2]}")

print("\n=== Slice Range with Negatives ===")
# From index 2 to second-to-last
print(f"From index 2 to -2 [2:-2]: {data[2:-2]}")

# From third-to-last to end
print(f"Last 3 [-3:]: {data[-3:]}")

print("\n=== String Slicing with Negatives ===")
text = "Programming"

print(f"Text: {text}")
print(f"Last 4 chars [-4:]: {text[-4:]}")
print(f"Remove last 3 chars [:-3]: {text[:-3]}")
print(f"Middle chars [3:-3]: {text[3:-3]}")

print("\n=== Practical: File Extension ===")
filename = "document.pdf"
extension = filename[-3:]  # Last 3 characters
name = filename[:-4]  # Everything except last 4 (.pdf)

print(f"Filename: {filename}")
print(f"Name: {name}")
print(f"Extension: {extension}")

print("\n=== Get Last N Elements Function ===")
def get_last_n(lst, n):
    return lst[-n:] if n > 0 else []

numbers = list(range(1, 21))
print(f"Last 5: {get_last_n(numbers, 5)}")
print(f"Last 10: {get_last_n(numbers, 10)}")