0
votes

Comment écrire une condition if telle que python doit exécuter l'instruction if si l'élément d'une liste peut être converti en type int

Comment puis-je écrire le code pour une condition if où je veux voir si je peux convertir le type d'un élément dans une liste en int. Si c'est possible, alors si la condition doit être exécutée, sinon, elle doit aller à l'instruction else

Par exemple:

lst=['@','#','^','%','20']

''' Now i am going to iterate through the list and check if i can convert the elements  to type int. If it can be converted then i know there is a number in the list and i do some operations on the number'''

for ele in lst:
    if(type(int(ele)=='int'):
        #do some operation on the number eg:20/2 and print the value
    else:
        continue

Veuillez me donner une idée de la manière d'écrire la condition if.


2 commentaires

Vous devriez plutôt try de convertir l'élément en int et continuer en cas de succès, except que vous faites autre chose lorsque cela échoue avec une ValueError .


Est-ce que cela répond à votre question? Python: testez si la valeur peut être convertie en un entier dans une compréhension de liste


4 Réponses :


0
votes

Essayez avec .isdigit() + une liste de compréhension (couple parfait ;-):

[str(x).replace('.','').isdigit() for x in lst]

Attention : ne fonctionne pas pour les chaînes flottantes, pour les flotteurs:

lst=['@','#','^','%','20']
[str(x).isdigit() for x in lst]


0 commentaires

0
votes

Vous pouvez vérifier si chaque élément est un int en utilisant un bloc try dans une fonction d'assistance is_int :

20/2 = 10.0

Production:

def is_int(s):
    try: 
        int(s)
        return True
    except ValueError:
        return False

lst = ['@', '#', '^', '%', '20']
for s in lst:
    if is_int(s):
        int_s = int(s)
        print(f'{int_s}/2 = {int_s/2}')
    else:
        continue


0 commentaires

1
votes

Essayez de convertir en int et attrapez l'erreur:

for ele in lst:
    try:
        val = int(ele)
    except ValueError:
        continue
    else:
        print(val)


0 commentaires

0
votes

Je pense que ce que vous recherchez est:

lst = ['@', '#', '^', '%', 20]

for ele in lst:
    if isinstance(ele,int):
        print("This is int: " + str(ele))
    else:
        print("This is not int: " + ele)
if isinstance(ele,int)

Très simple et facile.


2 commentaires

Merci. Mais je vérifie si les éléments peuvent être convertis en type int. pas si l'élément est de type int.


Oh désolé a propos de ca :)