3 minute read

Why I studied this

As I continue learning Python, I realized I needed to master some fundamental concepts that appear everywhere in programming. List slicing seemed simple at first, but I discovered it has many tricky aspects. I also wanted to understand how to generate sequences dynamically and handle multiple conditions efficiently. These three topics helped me build a stronger foundation in Python programming.


What I did

List Slicing and Reversing

I explored Python slicing, especially tricky expressions like list[0:0:-1]. This helped me understand how Python handles different slice parameters.

How it works:

The format is list[start:stop:step]. When step is negative, it goes backward, which can create confusing results.

Example Code:

numbers = [1, 2, 3, 4, 5]  

# Normal slicing  
print(numbers[1:4])      # [2, 3, 4]  
print(numbers[:3])       # [1, 2, 3]  

# Reverse slicing  
print(numbers[::-1])     # [5, 4, 3, 2, 1]  
print(numbers[4:1:-1])   # [5, 4, 3]  
print(numbers[0:0:-1])   # [] (empty - can't go from 0 to 0 backward)  

# Get last 3 elements  
print(numbers[-3:])      # [3, 4, 5]  

Custom Sequence Update

I worked with generating new elements in a list based on the difference of the last two elements.

How it works:

  1. Start with a list that has at least 2 numbers
  2. Take the last two numbers
  3. Calculate: last number - second to last number
  4. Add this difference to the list
  5. Repeat

Example Code:

def generate_sequence(start_list, num_steps):  
    result = start_list.copy()  
    
    for i in range(num_steps):  
        last = result[-1]  
        second_last = result[-2]  
        difference = last - second_last  
        result.append(difference)  
    
    return result  

# Examples  
sequence1 = generate_sequence([1, 3], 4)  
print(sequence1)  # [1, 3, 2, -1, -3]  

sequence2 = generate_sequence([5, 2], 3)  
print(sequence2)  # [5, 2, -3, -5, -2]  

Conditional Math on Three Integers

I applied different formulas based on whether all three integers were equal, all different, or partially equal.

How it works:

  1. Check if all three numbers are the same
  2. Check if all three numbers are different
  3. Otherwise, two must be equal and one different
  4. Apply different math based on each case

Example Code:

def conditional_math(a, b, c):  
    if a == b == c:  
        # All three are equal  
        result = a + b + c  
        case = "all equal"  
    elif a != b and b != c and a != c:  
        # All three are different  
        result = a * b * c  
        case = "all different"  
    else:  
        # Two are equal, one is different  
        result = (a + b + c) // 2  
        case = "two equal"  
    
    return result, case  

# Test examples  
print(conditional_math(3, 3, 3))    # (9, 'all equal')  
print(conditional_math(1, 2, 4))    # (8, 'all different')  
print(conditional_math(5, 5, 2))    # (6, 'two equal')  
print(conditional_math(7, 3, 7))    # (8, 'two equal')  

Key Insights

Problem What I learned Main concept
List Slicing Negative steps can create empty results Understanding slice direction
Sequence Generation Lists can grow based on their own patterns Building dynamic sequences
Conditional Math Multiple if-conditions handle different cases Organizing complex logic

What I learned

These problems taught me several important Python concepts:

  • Slicing has hidden complexity: Simple-looking slice expressions like [0:0:-1] can behave unexpectedly when the direction doesn’t make sense
  • Sequences can be self-generating: I can create interesting patterns by using existing list elements to calculate new ones
  • Conditional logic needs careful planning: When dealing with multiple conditions, I need to think through all possible cases
  • Testing edge cases is important: Understanding what happens in unusual situations helps me write better code

The slicing exercises showed me how powerful Python’s slice notation is, the sequence generation taught me about mathematical patterns in programming, and the conditional math helped me organize complex decision-making logic.


What I want to do next

  • Practice slicing with strings and see how it differs from lists
  • Create sequence generators for other mathematical patterns like Fibonacci numbers
  • Build programs that handle even more variables and conditions
  • Learn about list comprehensions as a shorter way to create lists
  • Explore how these concepts apply to real programming problems

Tags:

Updated: