Peut-on faire : if not [pos[v]==posp[v] for v in range(0,2)]:

Résolu/Fermé
Lecodeurhtmlcss Messages postés 76 Date d'inscription lundi 20 avril 2020 Statut Membre Dernière intervention 24 août 2022 - Modifié le 26 juil. 2021 à 18:41
Lecodeurhtmlcss Messages postés 76 Date d'inscription lundi 20 avril 2020 Statut Membre Dernière intervention 24 août 2022 - 30 juil. 2021 à 11:30
Bonjour ! (Ou bonsoir, je suis open ;D)

Est-il possible d'écrire en python
if not [pos[v]==posp[v] for v in range(0,2)]:
? Je pars sur un présupposé négatif car ça n'a pas l'air de fonctionner pour moi. L'idée est de faire quelque-chose si pos n'est égal à posp pour aucuns de leurs indices communs.


La solution de rattrapage serait longue et assez complexe pour pas grand-chose :
Termine=0
Compteur=0
while Termine==0:
    if pos[Compteur] == posp[Compteur]:
        Termine=2
    Compteur+=1
    if Compteur==3:
        Termine=1
if Termine==1:
    (suite du code)


Qui est fastidieux...

Merci beaucoup pour vos réponses !

2 réponses

Bonjour,

zip + for ... else conviendrait bien je pense.

pos, posp = [0, 1, 2], [1, 2, 3]

for a, b in zip(pos, posp):
    if a == b:
        print('Valeur commune !')
        break
else: # /!\ else du for et non du if
    print('Aucune valeur commune entre les deux listes !')
1
Lecodeurhtmlcss Messages postés 76 Date d'inscription lundi 20 avril 2020 Statut Membre Dernière intervention 24 août 2022 1
Modifié le 26 juil. 2021 à 20:50
Merci beaucoup ! (Peur injustifiée, je craignait de sortir de la fonction en plus de la boucle avec break...) Très astucieux le
else
du
for
! Bonne soirée !

Mais pourquoi a et b valent
pos[0] / 0
et
posp[0] / 1
, au lieu du tuple [0,1] et du tuple [0,1] ? a et b pourraient donc se "partager" le tuple alors qu'ils parcourent une liste ? (Si oui c'est sacrément bien fait...)
0
jee pee Messages postés 40449 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 14 novembre 2024 9 418
Modifié le 26 juil. 2021 à 18:46
Bonjour,

Et pourquoi pas
for v in range(0,2):
   if not pos[v]==posp[v] :


0
Lecodeurhtmlcss Messages postés 76 Date d'inscription lundi 20 avril 2020 Statut Membre Dernière intervention 24 août 2022 1
Modifié le 30 juil. 2021 à 11:32
Bonjour et merci jee pee, je n'ai pas explicité l'idée sous-jacente à ma question... De fait c'est (si ce n'est pas
pos[v]==posp[v] 
dans aucun des v) que je veux faire la suite de mon code (qui sinon contiendrait une division par 0) ! C'est pour ça que je voulais rétrécir cet argument en une ligne :
if not [toutlebazar]
Mais merci de la proposition qui, vu mon niveau, n'est pas irrationelle...
0