Помогите упростить код и избавиться от двойного For

Рейтинг: 0Ответов: 1Опубликовано: 21.05.2023

Вот часть кода. После первого print (vid_avto) результат таков - [('Мар',), ('Тро',), ('Авт',)]. Приходится в двойном цикле for пробежаться по списку и создать новый список. После второго print(list_vid_avto) результат уже тот что мне надо - ['Мар', 'Тро', 'Авт']. Мне очень не нравится это двойной for. Подскажите есть ли другая возможность добиться желаемого результата и упростить сам код. Учусь…

def sql_database_transport():
try:
    sqlite_connection = sqlite3.connect('Bus_stop.db')
    cursor = sqlite_connection.cursor()
    sql_select = f"SELECT autotransport.vid_avto FROM autotransport"
    vid_avto = cursor.execute(sql_select).fetchall()
    print (vid_avto)
    list_vid_avto = []
    for vid_a in vid_avto:
        for vd in vid_a:
            list_vid_avto.append(vd)
    print(list_vid_avto)
    return list_vid_avto

Ответы

▲ 1Принят

Если я правильно понял, list_vid_avto должен содержать нулевые элементы кортежей, входящих в vid_avto, тогда:

def sql_database_transport():
    try:
        sqlite_connection = sqlite3.connect('Bus_stop.db')
        cursor = sqlite_connection.cursor()
        sql_select = f"SELECT autotransport.vid_avto FROM autotransport"
        vid_avto = cursor.execute(sql_select).fetchall()
        print (vid_avto)
        list_vid_avto = []
        for vid_a in vid_avto:
            list_vid_avto.append(vid_a[0])
        print(list_vid_avto)
        return list_vid_avto
    except Exception as e:
        print(e)