Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 10-12-2018 15:25:21

doro
Invité

python itération

Bien le Bonsoir
Je souhaite convertir de nombreuse liste de tuple en liste de nombre, mais j'utilise la fonction itertools, pour créer l'ensemble des couples de tuples possible pour une action donnée, ce qui peut très vite atteindre de grand chiffre, je voulais donc savoir si l'un de vous aurez une idée qui me permettrai de me faciliter la tache ?
J'ai passé une bonne journée la dessus sans trouver de solution.
Je vous partage mon code et le message d'erreur
merci d'avance


l=[1,2,3,4]
for p in itertools.chain(*(itertools.combinations(l,long)for long in range(1,30))) :
   
    print(p)
    print(type(p))
    nouvelle_liste= []
    for item in p :
        a,b,c,d = item
        nouvelle_liste.append((int(a),int(b),int(c),int(d)))
        print(nouvelle_liste)
    #bonsoir=list(p)
#sum(bonsoir)
#print(bonsoir)

TypeError: cannot unpack non-iterable int object

#2 11-12-2018 10:18:28

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 13 886

Re : python itération

Salut,

Le code présenté ne peut fonctionner : il manque l'import.
Le message d'erreur est incomplet donc, très vague...
Le voilà dans son intégralité + la sortie qui précède...

+(1,)
<class 'tuple'>

Traceback (most recent call last):
  File "C:/Python35/Doro Itertools.py", line 10, in <module>
    a,b,c,d = item
TypeError: 'int' object is not iterable


Alors j'ai voulu voir ce que cachait exactement item :
>>> print (item)
1
>>> type(item)
<class 'int'>
puis p :
>>> p
(1,)

alors comment veux-tu que a,b,c,d = item fonctionne ?
Tu reçois un message d'erreur, c'est normal.
Donc, erreur de conception en amont, : avec ça, on devrait pouvoir corriger...

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
quaranteneuf moins trente sept
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums