0
votes

Mêmes mots dans 2 listes

['p', 'e', 'a', 'r', 'o', 'r', 'a', 'n', 'g', 'e']

2 commentaires

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ême liste est que + = utilise .extend pour les listes et non .append .


7 Réponses :


1
votes

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']

Sortie:

fruit = ['apple', 'pear', 'peach', 'orange']
fruit1 = ['pear', 'orange', 'banana', 'grapes']
same = []

for f in fruit:
    if f in fruit1:
        same.append(f)

print(same)


2 commentaires

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!



-1
votes
for f in fruit
    if f in fruit1:
        same.append(f)
print(same)

0 commentaires

3
votes

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]


2 commentaires

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 ...



0
votes

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]


1 commentaires

C'est littéralement le moyen le moins efficace de le faire ...



0
votes

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)


0 commentaires

1
votes

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


0 commentaires

2
votes

essayez le code en dessous d'une ligne

same = list(set(fruit).intersection(set(fruit1)))
print(same) 

['orange', 'pear']


0 commentaires