Как добавить элементы в список list() Python и посчитать их количество
Дата публикации:

Как добавить элементы в список list() Python и посчитать их количество


Как добавить элементы в список list() Python и посчитать их количество Telegram Bot aiogram. Работаю с SQLite, и использую метод fetchall, они у меня выводятся, а дальше идет другой цикл который должен вывести списком элементы из ret[1], пока что выводятся только скобки []Так же интересно как взять этот список и использовать его уже после окончания машины состояний в другой функции идли хэндлере async def second(message: types.Message, state: FSMContext): global search, cur search = sq.connect('slovari.db') cur = search.cursor() async with state.proxy() as data: data['text'] = message.text async with state.proxy() as data: #await message.reply(str(data)) for ret in cur.execute(f"SELECT Item1,Item2, Item3, Item4, Item5, Item6, Item7 FROM slovari WHERE Item1 = ? AND Item3 = ? AND Item4 = ? AND Item5 NOT LIKE '%{data['text']}%'", (data['text'], data['text'], data['text']) ).fetchall(): await bot.send_photo(message.from_user.id, ret[0], f'{ret[1]}\nТип :{ret[2]}\n Описание:{ret[3]}') spisok = list() for spisok in spisok: spisok.append(ret[1]) await bot.send_message(message.from_user.id, f'{spisok}') await state.finish()

Для добавления элементов в список в Python вы можете использовать метод append(). В вашем коде вы создаете пустой список spisok = list(), а затем пытаетесь добавить элементы в него с помощью spisok.append(ret[1]). Однако, у вас есть ошибка в цикле, где вы используете ту же переменную spisok для итерации, что приводит к неправильному добавлению элементов. Вместо этого, вы можете использовать другое имя переменной для итерации, например item, и добавлять элементы в список spisok следующим образом:

spisok = []
for item in cur.execute(f"SELECT Item1,Item2, Item3, Item4, Item5, Item6, Item7 FROM slovari WHERE Item1 = ? AND Item3 = ? AND Item4 = ? AND Item5 NOT LIKE '%{data['text']}%'", (data['text'], data['text'], data['text'])).fetchall():
    await bot.send_photo(message.from_user.id, item[0], f'{item[1]}\nТип :{item[2]}\n Описание:{item[3]}')
    spisok.append(item[1])
await bot.send_message(message.from_user.id, f'{spisok}')

Чтобы использовать этот список в другой функции или обработчике, вы можете передать его как аргумент или сохранить его в глобальной переменной. Например, вы можете сохранить список в глобальной переменной spisok и затем использовать его в другой функции:

spisok = []

async def first(message: types.Message, state: FSMContext):
    global spisok
    # ваш код
    for item in cur.execute(...):
        # ваш код
        spisok.append(item[1])
    # ваш код

async def second(message: types.Message, state: FSMContext):
    global spisok
    # использование списка spisok

Однако, использование глобальных переменных не рекомендуется, поскольку это может привести к проблемам с управлением состоянием и конфликтам при параллельном выполнении. Рекомендуется передавать список как аргумент или использовать механизмы хранения данных, такие как базы данных или кэширование.