Quand j'ai terminé le leetcode 1313, j'ai trouvé un usage spécial de l'intégré. sum
función.
Le problème du Leetcode 1313
On nous donne une liste nums
d'entiers représentant une liste compressée avec un encodage de longueur de course.
Considérons chaque paire adjacente d'éléments [a, b] = [nums[2*i], nums[2*i+1]] (with i >= 0)
. Pour chaque paire de ce type, il existe a
éléments ayant une valeur b
dans la liste décompressée.
Retourne la liste décompressée.
Exemple 1 :
Input: nums = [1,2,3,4] Output: [2,4,4,4] Explanation: The first pair [1,2] means we have freq = 1 and val = 2 so we generate the array [2]. The second pair [3,4] means we have freq = 3 and val = 4 so we generate [4,4,4]. At the end the concatenation [2] + [4,4,4,4] is [2,4,4,4].
Il existe une solution utilisant sum
nums = [1,2,3,4]
g = ([b] * a for a, b in zip(nums[::2], nums[1::2]))
print(list(g))
g = ([b] * a for a, b in zip(nums[::2], nums[1::2]))
print(sum(g,[]))
Sortie :
[[2], [4, 4, 4]] [2, 4, 4, 4]
Ma question
Je ne peux pas dire pourquoi sum
peut traiter une liste imbriquée dans cette situation. Quelqu'un peut-il m'en parler ? Ou d'autres fonctions ayant le même comportement ?
Voici le guide officiel pour l'encastrement sum
.