# Your list isn't frozen.
# mutating methods — add, remove, sort, reverse

squad = ["Raven", "Wolf", "Ghost", "Viper", "Bull"]

# ─────────────────────────────────────────────
# append() — add one element to the end
# ─────────────────────────────────────────────

squad = ["Raven", "Wolf"]
squad.append("Ghost")
print(squad)    # ['Raven', 'Wolf', 'Ghost']

squad.append("Viper")
squad.append("Bull")
print(squad)    # ['Raven', 'Wolf', 'Ghost', 'Viper', 'Bull']

# ─────────────────────────────────────────────
# insert() — add at a specific position
# ─────────────────────────────────────────────

squad = ["Raven", "Wolf", "Ghost"]
squad.insert(1, "Viper")        # index 1, value "Viper"
print(squad)    # ['Raven', 'Viper', 'Wolf', 'Ghost']

squad.insert(0, "Command")      # insert at the front
print(squad)    # ['Command', 'Raven', 'Viper', 'Wolf', 'Ghost']

# ─────────────────────────────────────────────
# extend() — add all elements from another list
# ─────────────────────────────────────────────

squad = ["Raven", "Wolf"]
reinforcements = ["Ghost", "Viper", "Bull"]
squad.extend(reinforcements)
print(squad)    # ['Raven', 'Wolf', 'Ghost', 'Viper', 'Bull']

# extend vs append — the difference
a = ["Raven", "Wolf"]
b = ["Raven", "Wolf"]

a.append(["Ghost", "Viper"])    # adds the list as one element
b.extend(["Ghost", "Viper"])    # adds each element separately

print(a)    # ['Raven', 'Wolf', ['Ghost', 'Viper']]
print(b)    # ['Raven', 'Wolf', 'Ghost', 'Viper']

# ─────────────────────────────────────────────
# remove() — delete first matching value
# ─────────────────────────────────────────────

squad = ["Raven", "Wolf", "Ghost", "Wolf"]
squad.remove("Wolf")            # removes first "Wolf" only
print(squad)    # ['Raven', 'Ghost', 'Wolf']

# squad.remove("Viper")         # ValueError — not in list

# ─────────────────────────────────────────────
# pop() — remove and return by index
# ─────────────────────────────────────────────

squad = ["Raven", "Wolf", "Ghost", "Viper", "Bull"]

last = squad.pop()              # no argument — removes last
print(last)     # Bull
print(squad)    # ['Raven', 'Wolf', 'Ghost', 'Viper']

second = squad.pop(1)           # removes index 1
print(second)   # Wolf
print(squad)    # ['Raven', 'Ghost', 'Viper']

# ─────────────────────────────────────────────
# clear() — empty the list
# ─────────────────────────────────────────────

squad = ["Raven", "Wolf", "Ghost"]
squad.clear()
print(squad)    # []             — list still exists, just empty

# ─────────────────────────────────────────────
# sort() — sort in place
# ─────────────────────────────────────────────

scores = [74, 98, 51, 85, 63]
scores.sort()
print(scores)   # [51, 63, 74, 85, 98]

scores.sort(reverse=True)
print(scores)   # [98, 85, 74, 63, 51]

names = ["Wolf", "Raven", "Bull", "Ghost", "Viper"]
names.sort()
print(names)    # ['Bull', 'Ghost', 'Raven', 'Viper', 'Wolf']

# ─────────────────────────────────────────────
# reverse() — flip the list
# ─────────────────────────────────────────────

squad = ["Raven", "Wolf", "Ghost", "Viper", "Bull"]
squad.reverse()
print(squad)    # ['Bull', 'Viper', 'Ghost', 'Wolf', 'Raven']

# ─────────────────────────────────────────────
# Common mistake — capturing None
# ─────────────────────────────────────────────

squad = ["Raven", "Wolf"]
squad = squad.append("Ghost")   # WRONG — append returns None
print(squad)                    # None

squad = ["Raven", "Wolf"]
squad.append("Ghost")           # CORRECT — no assignment
print(squad)                    # ['Raven', 'Wolf', 'Ghost']

# ─────────────────────────────────────────────
# Quick reference
# ─────────────────────────────────────────────

# append(x)         — add x to the end
# insert(i, x)      — add x at index i
# extend(list)      — add all elements from list
# remove(x)         — remove first occurrence of x (ValueError if missing)
# pop()             — remove and return last element
# pop(i)            — remove and return element at index i
# clear()           — remove all elements
# sort()            — sort ascending in place
# sort(reverse=True)— sort descending in place
# reverse()         — flip the list in place
#
# all of these modify the original list
# none return a new list (except pop() returns the removed element)
