Reputation: 47
I have this list:
liste_lots = ['lot 0', ['GARDEN: OUI'], 'lot 1', 'lot 2', 'lot 3', 'lot 4', 'lot 5', 'lot 6', 'lot 7', 'lot 8', 'lot 9', 'lot 10', 'lot 11', 'lot 12', 'lot 13', 'lot 14', 'lot 15', 'lot 16', 'lot 17', 'lot 18', ['BALCON: OUI'], 'lot 19', ['BALCON: OUI'], 'lot 20', 'lot 21', 'lot 22', 'lot 23', 'lot 24', 'lot 25', 'lot 26', 'lot 27', 'lot 28', 'lot 29', 'lot 30', 'lot 31', 'lot 32', 'lot 33', ['BALCON: OUI'], 'lot 34', 'lot 35', 'lot 36', 'lot 37', 'lot 38', 'lot 39', ['BALCON: OUI'], 'lot 40', 'lot 41', 'lot 42', 'lot 43', 'lot 44', 'lot 45', 'lot 46', 'lot 47', 'lot 48', 'lot 49', 'lot 50', 'lot 51', 'lot 52', 'lot 53', 'lot 54', 'lot 55', 'lot 56', 'lot 57', 'lot 58', 'lot 59', 'lot 60', 'lot 61', 'lot 62', 'lot 63', 'lot 64', 'lot 65', 'lot 66', 'lot 67', 'lot 68', 'lot 69', ['BALCON: OUI'], 'lot 70', ['GARDEN: OUI'], 'lot 71', ['BALCON: OUI'], 'lot 72']
Whenever I find two consecutive elements that their type is not a list (starts with lot), I want to add in between it an empty list []
.. not forgetting that the last item from the list (lot 72) should also have an empty list after it...
Example: if the list was this:
liste_lots = ['lot 0', ['GARDEN: OUI'], 'lot 1', 'lot 2', 'lot 3', 'lot 4', 'lot 5', 'lot 6', 'lot 7', 'lot 8', 'lot 9', 'lot 10']
Result shoud be:
liste_lots = ['lot 0', ['GARDEN: OUI'], 'lot 1', [], 'lot 2', [], 'lot 3', [], 'lot 4', 'lot 5', [], 'lot 6', [], 'lot 7', [], 'lot 8', [], 'lot 9', [], 'lot 10', []]
Upvotes: 0
Views: 50
Reputation: 10624
Try this:
l=liste_lots.copy()
n=1
for i in range(len(l)-1):
if type(l[i])!=list and type(l[i+1])!=list:
liste_lots.insert(i+n, [])
n+=1
if type(liste_lots[-1])!=list:
liste_lots=liste_lots+[[]]
Example:
liste_lots = ['lot 0', ['GARDEN: OUI'], 'lot 1', 'lot 2', 'lot 3', 'lot 4', 'lot 5', 'lot 6', 'lot 7', 'lot 8', 'lot 9', 'lot 10']
Output:
['lot 0', ['GARDEN: OUI'], 'lot 1', [], 'lot 2', [], 'lot 3', [], 'lot 4', [], 'lot 5', [], 'lot 6', [], 'lot 7', [], 'lot 8', [], 'lot 9', [], 'lot 10', []]
Upvotes: 1
Reputation: 5745
you can loop the list with some conditions:
fixed_list = []
for i, item in enumerate(liste_lots):
fixed_list.append(item)
if i!=len(liste_lots)-1 and not isinstance(liste_lots[i+1],list) and not isinstance(item,list):
fixed_list.append([])
elif i==len(liste_lots)-1 and not isinstance(item,list):
fixed_list.append([])
fixed_list
Out[8]:
['lot 0', ['GARDEN: OUI'], 'lot 1', [], 'lot 2', [], 'lot 3', [], 'lot 4', [], 'lot 5', ], lot 6', [], 'lot 7', [], 'lot 8', [], 'lot 9', [], 'lot 10', [], 'lot 11', [], 'lot 12', ], 'lot 13', [], 'lot 14', [], 'lot 15', [], 'lot 16', [], 'lot 17', [], 'lot 18', 'BALCON: OUI'], 'lot 19', ['BALCON: OUI'], 'lot 20', [], 'lot 21', [], 'lot 22', [], 'lot 3', [], 'lot 24', [], 'lot 25', [], 'lot 26', [], 'lot 27', [], 'lot 28', [], 'lot 29', ], lot 30', [], 'lot 31', [], 'lot 32', [], 'lot 33', ['BALCON: OUI'], 'lot 34', [], 'lot 5', ], 'lot 36', [], 'lot 37', [], 'lot 38', [], 'lot 39', ['BALCON: OUI'], 'lot 40', [], 'lot 1', [], 'lot 42', [], 'lot 43', [], 'lot 44', [], 'lot 45', [], 'lot 46', [], 'lot 47', ], lot 48', [], 'lot 49', [], 'lot 50', [], 'lot 51', [], 'lot 52', [], 'lot 53', [], 'lot 4', [], 'lot 55', [], 'lot 56', [], 'lot 57', [], 'lot 58', [], 'lot 59', [], 'lot 60', ], lot 61', [], 'lot 62',[], 'lot 63', [], 'lot 64', [], 'lot 65', [], 'lot 66', [], 'lot 7', ], 'lot 68', [], 'lot 69', ['BALCON: OUI'], 'lot 70', ['GARDEN: OUI'], 'lot 71', ['BALCON: UI'], 'lot 72', []]
Upvotes: 1