0
votes

Problème avec incrémentation des éléments entier dans la liste

Considérez la liste: MyList = [1,2,3, 'A', 'B', 4,5, 'C', 6] CODE>

Ce que je veux faire, c'est faire un programme qui renvoie la liste Après l'incrémentation de chaque élément entier par 1 code>, sautant à travers les éléments non entier. J'ai essayé le code suivant pour définir une fonction à l'aide de tandis que la boucle em> avec le paramètre x code>: p> xxx pré> p> maintenant, j'essaie Pour utiliser cette fonction pour renvoyer la valeur de f (myList) code>. Voici la sortie: p> xxx pré>

Comme vous pouvez le constater, il renvoie l'entrée elle-même, qui était très inattendue lorsque je voulais réellement être p>

[2, 3, 4, 'a', 'b', 5, 6, 'c', 7]


7 commentaires

"" est une chaîne. Un élément de votre liste est-il littéralement égal à cette chaîne? Vraisemblablement pas. Vous recherchez ISInstance .


@Forcebru édité ...


"" est une chaîne. Le type d'un objet ne peut pas éventuellement égaler cette chaîne exacte . Voir la documentation sur Type : docs.python.org /3.8/Library/fonctions.html#type


S'il vous plaît, n'utilisez pas de majuscules dans les titres de questions


Mon conseil sera de séparer les entiers des chaînes et de travailler avec différentes listes homogènes au lieu d'avoir une liste hétérogène


@AzatitroBakov ya sûr .. mais cela ne me dis pas le problème dans cette méthode


Veuillez ne pas modifier l'erreur dans votre code maintenant que vous le comprenez. Cela rend impossible de comprendre ce que les réponses parlent.


4 Réponses :


1
votes

Vous pouvez faire xxx

ou par boucle xxx

et corriger la fonction dans la description Xxx

Cette fonction vous retournera une nouvelle liste qui augmente chaque valeur Int par une et pour les autres valeurs, elle les gardera comme cela. La fonction retournera xxx


4 commentaires

Merci pour la suggestion mais pourriez-vous dire ce qui ne va pas avec mon code?


La ligne si (type (x [i])! = ""): doit être si (type (x [i])! = INT):


Étant donné que les classes sont uniques, nous pouvons utiliser est / n'est pas pour la comparer au lieu de == / ! =


@Vector Le code que j'ai édité la base sur votre code me renvoie le même résultat [2, 3, 4, 'A', 'B', 5, 6, 'C', 7]



1
votes

Vous devriez utiliser ISInstance Pour vérifier si un élément de type int avant d'incrémenter, sinon quittez tel quel. XXX

Si vous souhaitez une approche de boucle normale au lieu d'une compréhension de liste, un < Code> pour La boucle est plus appropriée, car vous savez comment combien d'éléments vous avez besoin d'itérale. Un tandis que la boucle ne convient que si vous ne connaissez pas le nombre d'itérations dont vous aurez besoin. Il est également plus facile de créer une nouvelle liste ici, au lieu de traiter des indices. xxx


0 commentaires

0
votes
def f(x):
i = -1
while (i < (len(x) - 1)):
    i+=1
    if (not isinstance(x[i], int)):
        continue
    x[i]+=1
return x

2 commentaires

Pensez à écrire quelques lignes! Cela ajoute beaucoup de valeur à votre "réponse".


et fixant l'indentation



0
votes

Veuillez trouver le code pour obtenir la sortie souhaitée comme indiqué dans votre question.

def f(x):
i = 0
while (i < (len(x))):
    if (type(x[i])) == int:
        x[i]+=1         
    else:
        print("Char",x[i])
    i+=1
return x
mylist = [1, 2, 3, 'a', 'b', 4, 5, 'c', 6]
f(mylist)


0 commentaires