Vous pouvez itérer chaque sous-liste et additionner les chiffres (sur la base d'un isinstance
contrôle) et de garder les non-nombres comme cela est:
l = [["hari","cs",10,20],["krish","it",10],["yash","nothing"]]
newl = []
for subl in l:
newsubl = []
acc = 0
for item in subl:
if isinstance(item, (int, float)):
acc += item
else:
newsubl.append(item)
newsubl.append(acc)
newl.append(newsubl)
print(newl)
# [['hari', 'cs', 30], ['krish', 'it', 10], ['yash', 'nothing', 0]]
Si vous aimez les fonctions de générateur cela pourrait être divisé en deux fonctions:
l = [["hari","cs",10,20],["krish","it",10],["yash","nothing"]]
def sum_numbers(it):
acc = 0
for item in it:
if isinstance(item, (int, float)):
acc += item
else:
yield item
yield acc
def process(it):
for subl in it:
yield list(sum_numbers(subl))
print(list(process(l)))
# [['hari', 'cs', 30], ['krish', 'it', 10], ['yash', 'nothing', 0]]
sont toujours les numéros à la fin de chaque liste? –
oui @StamKaly, vous avez raison sur le modèle. – Gayathri