['p', 'e', 'a', 'r', 'o', 'r', 'a', 'n', 'g', 'e']
7 Réponses :
Si les listes ont la même longueur, vous pouvez boucler sur une seule liste et comparer les éléments de chaque liste et les ajouter à la même liste.
Lors de l'ajout à une liste, c'est aussi important d'utiliser .append () car vous utilisez actuellement + = qui, comme mentionné dans les commentaires, utilise .extend . p >
['pear', 'orange']
fruit = ['apple', 'pear', 'peach', 'orange']
fruit1 = ['pear', 'orange', 'banana', 'grapes']
same = []
for f in fruit:
if f in fruit1:
same.append(f)
print(same)
vous n'avez pas à vérifier f dans les fruits car il parcourt déjà cette liste
@Spounka Désolé, je n'ai pas réalisé! Mettra à jour ma solution merci!
for f in fruit
if f in fruit1:
same.append(f)
print(same)
Vous pouvez utiliser une simple compréhension de liste comme celle-ci,
fruit = ['apple', 'pear', 'peach', 'orange']
fruit1 = ['pear', 'orange', 'banana', 'grapes']
same = []
for f in fruit:
for ff in fruit1:
if f == ff:
same.append(f)
print(same)
Vous pouvez également utiliser la structure de données en Python connue sous le nom de set , si vous connaissez set , il vous permet d'obtenir une intersection.
fruit = set(['apple', 'pear', 'peach', 'orange']) fruit1 = set(['pear', 'orange', 'banana', 'grapes']) same_fruits = fruit.intersection(fruit1)
Mise à jour (problème dans votre code)
Votre code ne fonctionne pas car le type str lui-même est un itérable en Python. Ainsi, lorsque vous utilisez l'opérateur + avec list et apple ou orange , qui est à nouveau un prononcé , Python essaie de étendre au lieu d'utiliser la méthode append . Vous pouvez également apporter une petite modification à votre code, pour vous assurer que str est ajouté dans son ensemble au lieu de le traiter comme des composants individuels en utilisant exclusivement la méthode append . Au lieu de l'opérateur + qui, dans ce cas, étend iterable avec un autre iterable , utilisez la méthode append . P >
same_fruits = [frt for frt in fruit if frt in fruit1]
Puisque vous avez plus de 15 représentants, je vous suggère d'utiliser le bouton "drapeau" pour fermer les questions en double.
Le type str lui-même est une list ? les deux sont itérables ...
Cela peut être fait avec la compréhension de liste:
for f in fruit:
if f in fruit1:
same.append(f)
vous avez des erreurs de logique dans votre code ci-dessous:
for f in fruit:
if f in fruit1 and f in fruit:
same.append(f)
la question et f dans fruit dans l'instruction if est incorrect et redondant, parce que votre for court sur les fruits, donc f est un élément dans les fruits c'est sûr. comment le réparer? omettez simplement cette question.
fruit = ['apple', 'pear', 'peach', 'orange'] fruit1 = ['pear', 'orange', 'banana', 'grapes'] same = [f for f in fruit if f in fruit1]
C'est littéralement le moyen le moins efficace de le faire ...
Pour votre compréhension générale. Vous avez plusieurs opérations de liste comme append (), extend (), remove () etc
for f1 in fruit:
for f2 in fruit1:
if f1==f2:
same.append(f1)
print(same)
Je pense que ce que vous recherchez est ceci:
fruit = ['apple', 'pear', 'peach', 'orange']
fruit1 = ['pear', 'orange', 'banana', 'grapes']
same = []
for f in fruit:
if f in fruit1:
same.append(f)
print(same)
Une meilleure approche serait:
fruit = ['apple', 'pear', 'peach', 'orange']
fruit1 = ['pear', 'orange', 'banana', 'grapes']
same = []
for f in fruit:
for ff in fruit1:
if f == ff:
same.append(f)
print(same)
car c'est beaucoup plus propre
essayez le code en dessous d'une ligne
same = list(set(fruit).intersection(set(fruit1))) print(same)
['orange', 'pear']
Utilisez
same.append (f)au lieu de+ =Le problème ne vient pas de votre algorithme; la raison pour laquelle vous obtenez des lettres individuelles dans la
mêmeliste est que+ =utilise.extendpour les listes et non.append code >.