Salut à tous,
J'aimerais faire un XOR entre tous les élements de ma liste , mais je ne sais pas comment m'y prendre.
Je suis parti sur un for in, mais je ne trouve pas la syntaxe pour faire ce que je veux.
Merci d'avance
Salut à tous,
J'aimerais faire un XOR entre tous les élements de ma liste , mais je ne sais pas comment m'y prendre.
Je suis parti sur un for in, mais je ne trouve pas la syntaxe pour faire ce que je veux.
Merci d'avance
Bonjour
un len(filter(...)) == 1 ?
"La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !
Code : Sélectionner tout - Visualiser dans une fenêtre à part new_list = [a[i]^a[i+1] for i in range(len(my_list)-1)]
Bonjour ,
Merci de vos réponses, cependant, mon but est d'avoir ce résultat :
7^7^0^0 = 12 (oui c'est faux, c'est juste pour l'exemple)
Or dans les solutions que vous me proposé, je n'obtient pas ce résultat mais seulement le XOR entre un valeur et sa suivante
Quelle drôle d'idée !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 >>> xor = lambda L: len(filter(lambda x: x, L)) == 1 >>> L = [1, 2, 3, 4] >>> xor(L) False >>> L = [0, 0, 1, 2, ] >>> xor(L) False >>> L = [0, 0, 1 ] >>> xor(L) True
"La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !
Bonjour,
avec Python2, on peut faire comme ça :
et avec Python3, comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 #!/usr/bin/python # -*- coding: utf-8 -*- liste = [7, 3, 1, 3, 7, 12] print reduce(lambda x,y:x^y, liste)
c'est un peu feignasse comme méthode, mais ça fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #!/usr/bin/python3 # -*- coding: utf-8 -*- from functools import reduce liste = [7, 3, 1, 3, 7, 12] print(reduce(lambda x,y:x^y, liste))
@+.
Merci pour votre aide , la première méthode ( j'utilise python 2 ) marche parfaitement.
Rebonjour, mon crc venant de changer je me retrouve dans le même besoin que précédemment
Description du crc :
CRC Order : 8
CRC Polynom : 0x97
reflect_in = False
xor_in = 0x0000,
reflect_out = False,
xor_out = 0x0000
J'ai trouver une lib en python pour appliquer ce CRC avec l'algo bit_by_bit_fast. voici l'utilisation de la lib :
Sur ce code avec la chaîne : 123456789 le résultat doit être 0x94
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 This is an example use of the different algorithms: >>> from crc_algorithms import Crc >>> >>> crc = Crc(width = 16, poly = 0x8005, ... reflect_in = True, xor_in = 0x0000, ... reflect_out = True, xor_out = 0x0000) >>> print("0x%x" % crc.bit_by_bit("123456789")) >>> print("0x%x" % crc.bit_by_bit_fast("123456789")) >>> print("0x%x" % crc.table_driven("123456789")) """
J'ai essayer de créer une fonction lambda pour ça mais je sais pas trop comment m'y prendre.
Merci d'avance
Edit :
Trouvé !
Si ça intéresse quelqu'un j'utilise la lib pycrc 0.8.1.
je trouve que c'est très bien implémenté et facile d'utilisation
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager