Как сократить код Python

Вот собственно код и тут все видно. Хотелось бы автоматизировать через цикл. Но обратите внимание, последняя строка при выводе имеет только дату, как удалять такие не полные строки автоматом? Так же товара может быть больше, но структура строк не меняется.

import sqlite3

add = []
test = []
test.append(['32', 'AGA Антифриз Z40', '38', 'Mannol Classic 10W-40', '42', 'Fenom Очиститель карб', '47', 'Gleid Master -30 жид']) 
test.append(['250,00', '380,00', '200,00', '350,00']) 
test.append(['7.00', '22.00', '17.00', '25.00']) 
test.append(['2.00', '500,00', '1.00', '380,00', '1.00', '200,00', '1.00', '350,00']) 
test.append(['06-04-21'])

for i in range(1):
    a1 = test[0:5][0][0:2],test[0:5][1][0:1],test[0:5][2][0:1],test[0:5][3][0:2],test[0:5][4][0:1]
    a2 = test[0:5][0][2:4],test[0:5][1][1:2],test[0:5][2][1:2],test[0:5][3][2:4],test[0:5][4][0:1]
    a3 = test[0:5][0][4:6],test[0:5][1][2:3],test[0:5][2][2:3],test[0:5][3][4:6],test[0:5][4][0:1]
    a4 = test[0:5][0][6:8],test[0:5][1][3:4],test[0:5][2][3:4],test[0:5][3][6:8],test[0:5][4][0:1]
    a5 = test[0:5][0][8:10],test[0:5][1][4:5],test[0:5][2][4:5],test[0:5][3][8:10],test[0:5][4][0:1]

res1 = []
res2 = []
res3 = []
res4 = []
res5 = []
for x in a1:
    res1.extend(x if isinstance(x, list) else [x])
for x in a2:
    res2.extend(x if isinstance(x, list) else [x])
for x in a3:
    res3.extend(x if isinstance(x, list) else [x])    
for x in a4:
    res4.extend(x if isinstance(x, list) else [x])
for x in a5:
    res5.extend(x if isinstance(x, list) else [x])

add.append(res1)
add.append(res2)
add.append(res3)
add.append(res4)
add.append(res5)
print()
print()
print(add)

[['32', 'AGA Антифриз Z40', '250,00', '7.00', '2.00', '500,00', '06-04-21'],
['38', 'Mannol Classic 10W-40', '380,00', '22.00', '1.00', '380,00', '06-04-21'],
['42', 'Fenom Очиститель карб', '200,00', '17.00', '1.00', '200,00', '06-04-21'],
['47', 'Gleid Master -30 жид', '350,00', '25.00', '1.00', '350,00', '06-04-21'],
['06-04-21']]


Ответы (3 шт):

Автор решения: MyZik
import sqlite3

add = []
test = [['32', 'AGA Антифриз Z40', '38', 'Mannol Classic 10W-40', '42', 'Fenom Очиститель карб', '47',
         'Gleid Master -30 жид'], ['250,00', '380,00', '200,00', '350,00'], ['7.00', '22.00', '17.00', '25.00'],
        ['2.00', '500,00', '1.00', '380,00', '1.00', '200,00', '1.00', '350,00'], ['06-04-21']]

a1 = test[0:5][0][0:2], test[0:5][1][0:1], test[0:5][2][0:1], test[0:5][3][0:2], test[0:5][4][0:1]
a2 = test[0:5][0][2:4], test[0:5][1][1:2], test[0:5][2][1:2], test[0:5][3][2:4], test[0:5][4][0:1]
a3 = test[0:5][0][4:6], test[0:5][1][2:3], test[0:5][2][2:3], test[0:5][3][4:6], test[0:5][4][0:1]
a4 = test[0:5][0][6:8], test[0:5][1][3:4], test[0:5][2][3:4], test[0:5][3][6:8], test[0:5][4][0:1]
a5 = test[0:5][0][8:10], test[0:5][1][4:5], test[0:5][2][4:5], test[0:5][3][8:10], test[0:5][4][0:1]

res1 = res2 = res3 = res4 = res5 = []

for x in a1:
    res1.extend(x if isinstance(x, list) else [x])
for x in a2:
    res2.extend(x if isinstance(x, list) else [x])
for x in a3:
    res3.extend(x if isinstance(x, list) else [x])
for x in a4:
    res4.extend(x if isinstance(x, list) else [x])
for x in a5:
    res5.extend(x if isinstance(x, list) else [x])

""""
Выше можете заменить и попробовать так:
[res1.extend(x if isinstance(x, list) else [x]) for x in a1]
[res2.extend(x if isinstance(x, list) else [x]) for x in a2]
[res3.extend(x if isinstance(x, list) else [x]) for x in a3]
[res4.extend(x if isinstance(x, list) else [x]) for x in a4]
[res4.extend(x if isinstance(x, list) else [x]) for x in a4]
[res5.extend(x if isinstance(x, list) else [x]) for x in a5]
"""

add.append(res1)
add.append(res2)
add.append(res3)
add.append(res4)
add.append(res5)
print()
print()
print(add)
→ Ссылка
Автор решения: ioprst
arr = [[] for _ in range(5)]
n = m = 0
for i in range(5):
    arr[i] = [test[0:5][0][n:n+2], test[0:5][1][m:m+1], test[0:5][2][m:m+1], test[0:5][3][n:n+2], test[0:5][4][0:1]]
    n += 2
    m += 1

for i, item in enumerate(arr):
    add.append([])
    for x in item:
        add[i].extend(x if isinstance(x, list) else [x])
→ Ссылка
Автор решения: GrAnd

Вообще в одну строчку делается. :)

test = [['32', 'AGA Антифриз Z40', '38', 'Mannol Classic 10W-40', '42', 'Fenom Очиститель карб', '47', 'Gleid Master -30 жид'],
        ['250,00', '380,00', '200,00', '350,00'],
        ['7.00', '22.00', '17.00', '25.00'],
        ['2.00', '500,00', '1.00', '380,00', '1.00', '200,00', '1.00', '350,00'],
        ['06-04-21']]

result = [[el for grp in it for el in grp] + test[-1] for it in zip(*[zip(*[iter(test[i])]*n) for i, n in enumerate([2,1,1,2])])]

from pprint import pprint 
pprint(result, width=len(str(result))-1)
[['32', 'AGA Антифриз Z40', '250,00', '7.00', '2.00', '500,00', '06-04-21'],
 ['38', 'Mannol Classic 10W-40', '380,00', '22.00', '1.00', '380,00', '06-04-21'],
 ['42', 'Fenom Очиститель карб', '200,00', '17.00', '1.00', '200,00', '06-04-21'],
 ['47', 'Gleid Master -30 жид', '350,00', '25.00', '1.00', '350,00', '06-04-21']]
→ Ссылка