Bonjour j'ai essayé de résoudre ce problème sans succès, j'aimerais savoir comment je peux le résoudre en python:
name = ['ball', 'jeans','ball'] price = [1, 4, 1] weight = [2, 2, 2] def productDuplicates(name, price, weight): if __name__ == "__main__": productDuplicates(name, price, weight)
Je dois renvoyer un entier avec le nombre de produits en double. Les trois listes peuvent contenir n éléments mais pour simplifier la question, je n'en ai ajouté que trois, de sorte qu'un produit est considéré comme dupliqué le nom, le prix et le poids doivent être égaux
4 Réponses :
La fonction ci-dessous crée une liste de produits avec des noms, des prix et des poids sous forme de tuple, puis parcourt tous les produits et ajoute les doublons à un ensemble, puis renvoie la longueur définie.
name = ['ball', 'jeans','ball'] price = [1, 4, 1] weight = [2, 2, 2] def productDuplicates(name, price, weight): products_list = list(zip(name, price, weight)) duplicates = set() for p in products_list: if products_list.count(p) > 1: duplicates.add(p) return len(duplicates) if __name__ == "__main__": print(productDuplicates(name, price, weight))
Salut, merci pour votre solution, je pense que c'est une bonne option, en termes de performances je pense que c'est la plus efficace @Lucas
vous pouvez utiliser zip()
pour combiner les propriétés (dans ce cas le nom, le prix et le poids) dans un tuple et supprimer les doublons en utilisant un ensemble, voici votre méthode productDuplicates:
def productDuplicates(name, price, weight): temp_list = list() for each_product in zip(name,price,weight): temp_list.append(each_product) return len(temp_list) - len(set(temp_list)) #set keeps the unique elements
l'approche la plus courante que j'ai vue pour identifier un certain nombre de doublons dans les listes consiste à utiliser un ensemble, puis à comparer la longueur de celui-ci à la longueur de la liste. C'est très simple en termes de lignes de code:
name = ['ball', 'jeans','ball'] price = [1, 4, 1] weight = [2, 2, 2] def productDuplicates(name, price, weight): l = list(zip(name, price, weight)) return(len(l)-len(set(l)))
Bonjour, merci pour votre réponse rapide, en termes de performances, vous utiliseriez cette approche ou une approche en boucle. @Sammy
name = ['ball', 'bat', 'glove', 'glove', 'glove', 'ball'] price = [2, 3, 1, 2, 1, 2] weight = [2, 5, 1, 1, 1, 2] def numDuplicates(name, price, weight): all = [] seen = [] dup = [] i = 0 for n in name: all.append([n, price[i], weight[i]]) i += 1 for good in all: if good not in seen: seen.append(good) else: dup.append(good) print("seen", seen) print("dup", dup) if __name__ == '__main__': numDuplicates(name, price, weight)
Qu'est-ce qui est considéré comme un produit en double? qu'avez-vous essayé?
Le problème me semble assez clair. Votre problème est que vous n'avez montré aucune tentative de solution. Nous sommes là pour vous aider et non pour résoudre votre problème à votre place.
Un produit en double est un produit dont le nom, le prix et le poids sont les mêmes, si vous regardez les trois listes dans lesquelles se trouvent les produits en double: nom [0] nom [2] prix [0] prix [2] poids [0] poids [ 2] Ce problème m'a été présenté dans une offre d'emploi et j'ai été raccroché, j'ai essayé de compresser les 3 listes en une avec la fonction zip (), regrouper les valeurs de cette façon [('ball', 1 , 2), ('jeans', 4, 2), ('ball', 1, 2)] après cela j'ai raccroché sans savoir comment les comparer @ Akaisteph7
Un produit en double est un produit dont le nom, le prix et le poids sont les mêmes, si vous regardez les trois listes dans lesquelles se trouvent les produits en double: nom [0] nom [2] prix [0] prix [2] poids [0] poids [ 2] Ce problème m'a été présenté dans une offre d'emploi et j'ai été raccroché @Sayse
Vous nous avez donc demandé de résoudre une question pour laquelle vous êtes spécifiquement payé? Veuillez lire Comment demander et montrer ce que vous avez fait vous-même.