Как добавить элементы в список 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
Однако, использование глобальных переменных не рекомендуется, поскольку это может привести к проблемам с управлением состоянием и конфликтам при параллельном выполнении. Рекомендуется передавать список как аргумент или использовать механизмы хранения данных, такие как базы данных или кэширование.