Considérez la liste:
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 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> MyList = [1,2,3, 'A', 'B', 4,5, 'C', 6] CODE>
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>
f (myList) code>. Voici la sortie: p>
[2, 3, 4, 'a', 'b', 5, 6, 'c', 7]
4 Réponses :
Vous pouvez faire ou par boucle p> et corriger la fonction dans la description p> 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 p>
Merci pour la suggestion mais pourriez-vous dire ce qui ne va pas avec mon code?
La ligne si (type (x [i])! = "
si (type (x [i])! = INT): code>
Étant donné que les classes sont uniques, nous pouvons utiliser est code> /
n'est pas
pour la comparer au lieu de
== code> /
! = code>
@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] Code>
Vous devriez utiliser Si vous souhaitez une approche de boucle normale au lieu d'une compréhension de liste, un < Code> pour code> La boucle est plus appropriée, car vous savez comment combien d'éléments vous avez besoin d'itérale. Un ISInstance code>
Pour vérifier si un élément de type int code> avant d'incrémenter, sinon quittez tel quel.
tandis que la boucle code> 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. p>
def f(x): i = -1 while (i < (len(x) - 1)): i+=1 if (not isinstance(x[i], int)): continue x[i]+=1 return x
Pensez à écrire quelques lignes! Cela ajoute beaucoup de valeur à votre "réponse".
et fixant l'indentation
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)
"" code> est une chaîne. Un élément de votre liste est-il littéralement égal à cette chaîne? Vraisemblablement pas. Vous recherchez
ISInstance code>
.@Forcebru édité ...
"" code> est une chaîne. Le type d'un objet ne peut pas éventuellement égaler cette chaîne exacte i>. Voir la documentation sur
Type Code>: 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.