📝 Python

Методы списков: управление коллекциями 📝

0
ავტორი
04e5cc8b-58ac-4bdc-bdee-661bbb
📅
გამოქვეყნებულია
30.03.2026
⏱️
კითხვის დრო
4 წთ
👁️
ნახვები
15
🌱
დონე
საწყისი
🐦 💼 ✈️

Списки — это не просто хранилище данных. У них есть встроенные действия (методы), которые позволяют добавлять, удалять и изменять элементы.

🎯 Что такое методы?

Метод — это действие, которое может выполнить объект.

Синтаксис:

объект.метод()

Например:

my_list.append(5)  # Вызываем метод append у списка my_list

➕ append() - добавить в конец

Самый частый метод! Добавляет элемент в КОНЕЦ списка:

hand = ["🐲 Дракон", "🧙 Маг"]

print(hand)  # ['🐲 Дракон', '🧙 Маг']

hand.append("⚔️ Рыцарь")

print(hand)  # ['🐲 Дракон', '🧙 Маг', '⚔️ Рыцарь']

Где использовать:
- Раздача карт в руку
- Добавление нового игрока
- Сбор очков

Пример: раздача карт

import random

creatures = [
    {"name": "🐲 Дракон", "attack": 8},
    {"name": "🧙 Маг", "attack": 6},
    {"name": "⚔️ Рыцарь", "attack": 5}
]

player_hand = []

# Раздаем 3 карты
for i in range(3):
    card = random.choice(creatures)
    player_hand.append(card)
    print(f"Получена карта: {card['name']}")

print(f"\nВсего карт в руке: {len(player_hand)}")

❌ remove() - удалить элемент по значению

Удаляет ПЕРВОЕ вхождение указанного значения:

inventory = ["Меч", "Щит", "Зелье", "Меч"]

print(inventory)  # ['Меч', 'Щит', 'Зелье', 'Меч']

inventory.remove("Меч")  # Удалит ПЕРВЫЙ меч

print(inventory)  # ['Щит', 'Зелье', 'Меч']

⚠️ Важно: Если элемента нет в списке — будет ошибка!

items = ["Меч", "Щит"]

items.remove("Лук")  # ❌ ValueError: 'Лук' not in list

Безопасный вариант:

items = ["Меч", "Щит"]

if "Лук" in items:
    items.remove("Лук")
else:
    print("Лука нет в инвентаре")

Пример: удаление погибшей карты

enemy_hand = [
    {"name": "🐲 Дракон", "health": 12},
    {"name": "🧙 Маг", "health": 0},  # Погиб!
    {"name": "⚔️ Рыцарь", "health": 10}
]

for card in enemy_hand:
    if card["health"] <= 0:
        print(f"💀 {card['name']} повержен!")
        enemy_hand.remove(card)
        break  # Важно! Нельзя изменять список во время перебора

print(f"У врага осталось карт: {len(enemy_hand)}")

🎯 pop() - извлечь и удалить

Удаляет элемент ПО ИНДЕКСУ и ВОЗВРАЩАЕТ его:

cards = ["🐲 Дракон", "🧙 Маг", "⚔️ Рыцарь"]

# Взять последнюю карту
last_card = cards.pop()
print(f"Взял: {last_card}")  # ⚔️ Рыцарь
print(cards)  # ['🐲 Дракон', '🧙 Маг']

# Взять первую карту
first_card = cards.pop(0)
print(f"Взял: {first_card}")  # 🐲 Дракон
print(cards)  # ['🧙 Маг']

Без аргумента — удаляет последний элемент
С индексом — удаляет элемент с этим индексом

Пример: ход игрока

player_hand = [
    {"name": "🐲 Дракон", "attack": 8},
    {"name": "🧙 Маг", "attack": 6},
    {"name": "⚔️ Рыцарь", "attack": 5}
]

print("Твоя рука:")
for i, card in enumerate(player_hand):
    print(f"{i+1}. {card['name']}")

choice = int(input("\nВыбери карту (1-3): "))
selected_card = player_hand.pop(choice - 1)

print(f"\n⚔️ Ты сыграл: {selected_card['name']}")
print(f"Осталось карт: {len(player_hand)}")

🔍 Проверка наличия: in

Перед удалением или поиском — проверь есть ли элемент:

inventory = ["Меч", "Щит", "Зелье"]

if "Меч" in inventory:
    print("✅ У тебя есть меч!")
else:
    print("❌ Меча нет")

if "Лук" not in inventory:
    print("У тебя нет лука")

📏 len() - количество элементов

Узнать сколько элементов в списке:

hand = ["🐲 Дракон", "🧙 Маг", "⚔️ Рыцарь"]

print(f"Карт в руке: {len(hand)}")  # 3

if len(hand) == 0:
    print("Рука пуста!")

Проверка пустоты:

if len(hand) > 0:
    print("Есть карты")

# Или короче:
if hand:  # Пустой список = False
    print("Есть карты")

🔄 clear() - очистить список

Удаляет ВСЕ элементы:

hand = ["🐲 Дракон", "🧙 Маг", "⚔️ Рыцарь"]

print(hand)  # ['🐲 Дракон', '🧙 Маг', '⚔️ Рыцарь']

hand.clear()

print(hand)  # []
print(f"Карт осталось: {len(hand)}")  # 0

📊 Таблица методов

Метод Что делает Пример
.append(x) Добавить в конец hand.append("Меч")
.remove(x) Удалить по значению hand.remove("Меч")
.pop() Удалить последний и вернуть card = hand.pop()
.pop(i) Удалить по индексу card = hand.pop(0)
.clear() Очистить список hand.clear()
len(список) Количество элементов len(hand)
x in список Проверка наличия "Меч" in hand

💪 Практические примеры

Пример 1: Инвентарь

inventory = []

# Добавляем предметы
inventory.append("Меч")
inventory.append("Щит")
inventory.append("Зелье")

print(f"Инвентарь: {inventory}")

# Используем зелье
if "Зелье" in inventory:
    inventory.remove("Зелье")
    print("💊 Использовано зелье!")

print(f"Осталось: {inventory}")

Пример 2: Очередь действий

actions_queue = ["атака", "защита", "лечение", "мощная_атака"]

while len(actions_queue) > 0:
    current_action = actions_queue.pop(0)  # Берем первое
    print(f"⚔️ Выполняю: {current_action}")

print("Все действия выполнены!")

Пример 3: Колода карт

deck = [
    {"name": "🐲 Дракон", "attack": 8},
    {"name": "🧙 Маг", "attack": 6},
    {"name": "⚔️ Рыцарь", "attack": 5},
    {"name": "🧚 Фея", "attack": 3}
]

hand = []

# Берем 2 карты из колоды в руку
for i in range(2):
    card = deck.pop(0)  # Берем первую карту из колоды
    hand.append(card)   # Добавляем в руку
    print(f"Взял карту: {card['name']}")

print(f"\nКарт в колоде: {len(deck)}")
print(f"Карт в руке: {len(hand)}")

⚠️ Важные моменты

1. Нельзя изменять список во время его перебора

# ❌ ОШИБКА!
items = ["A", "B", "C", "D"]
for item in items:
    if item == "B":
        items.remove(item)  # Может пропустить элементы!

# ✅ ПРАВИЛЬНО: используй список копию или break
items = ["A", "B", "C", "D"]
for item in items[:]:  # [:] создает копию
    if item == "B":
        items.remove(item)

2. remove() vs pop()

# remove() - удаляет по ЗНАЧЕНИЮ
hand = ["Меч", "Щит", "Зелье"]
hand.remove("Щит")  # Удалил "Щит"

# pop() - удаляет по ИНДЕКСУ
hand = ["Меч", "Щит", "Зелье"]
hand.pop(1)  # Удалил элемент с индексом 1 (тоже "Щит")

3. Методы изменяют сам список

numbers = [1, 2, 3]
numbers.append(4)  # Изменили numbers напрямую
print(numbers)  # [1, 2, 3, 4]

# Методы НЕ возвращают новый список (кроме pop)
result = numbers.append(5)
print(result)  # None

🎯 Итог

Основные методы:
- ✅ .append(x) — добавить элемент
- ✅ .remove(x) — удалить по значению
- ✅ .pop() — взять и удалить
- ✅ .clear() — очистить весь список
- ✅ len(список) — узнать размер
- ✅ x in список — проверить наличие

Запомни:
- Методы вызываются через точку: список.метод()
- append добавляет в конец
- remove удаляет по значению (первое вхождение)
- pop удаляет по индексу и возвращает элемент
- Проверяй наличие перед удалением!
- len() для проверки размера списка

თქვენი რეაქცია სტატიაზე

💬 კომენტარები (0)

🔐 შედით სისტემაში კომენტარის დასატოვებლად
🚪 შესვლა
💭

კომენტარები ჯერ არ არის

გახდით პირველი, ვინც გააზიარებს აზრს ამ სტატიის შესახებ!

🔗 მსგავსი

მსგავსი სტატიები

გააგრძელეთ სწავლა ამ მასალებით

📝

JSON: Сохранение данных как в большой игре 💾

Цель: Научиться сохранять и загружать данные в формате JSON.

📅 03.04.2026 👁️ 25
📝

map() — Преобразуй всё разом! 🔄

map() применяет функцию к каждому элементу списка и возвращает результаты.

📅 03.04.2026 👁️ 21
📝

filter() — Отбери лучшее! 🔍

filter() отбирает элементы, которые проходят проверку (возвращают True).

📅 03.04.2026 👁️ 14

მოგეწონათ სტატია?

გამოიწერეთ ჩვენი განახლებები და მიიღეთ ახალი სტატიები პირველებმა. განვითარდით PyLand-თან ერთად!