2017-08-28 7 views
0

Je veux parcourir à la Nième fois ma liste. Ceci est mon code d'exemple.Comment parcourir plusieurs listes associées jusqu'à des nombres spécifiés en python?

a = [2, 4, 6, 8, 10] 
b = [i - 1 for i in a] 
print(b) 
c = [i * 10 for i in b] 
print(c) 
d = [i/3 for i in c] 
print(d) 
a = [m/n for m,n in zip(d,a)] 
print(a) 
b=[i - 1 for i in a] 
print(b) 
c = [i * 10 for i in b] 
print(c) 
d = [i/3 for i in c] 
print(d) 
a = [m/n for m,n in zip(d,a)] 
print(a) 

Par exemple, je souhaite effectuer une itération 10 fois sur toutes les listes. Mais je ne veux pas écrire ces mêmes codes 10 fois. Existe-t-il un moyen efficace d'obtenir les résultats souhaités? Merci d'avance.

+3

Ecrire une fonction pour la logique d'itération et de transmettre la liste 'a' comme argument à .. !! – Rajez

Répondre

2

Si vous n'avez pas besoin réellement les listes intermédiaires, vous pouvez combiner toutes les opérations de mathématiques en un seul:

def func(a, n): 
    for _ in range(n): 
     a = [(i-1)*10/(3*i) for i in a] 
    return a 
+0

Je cours votre code. Il n'imprime rien. Il se produit le code de sortie 0. – Soros

+0

a = [2, 4, 6, 8, 10] n = 10 pour k dans la plage (n): a = [(i - 1) * 10/(3 * i) pour i dans un] print (a) Cela fonctionne. Je ne sais pas ce qui est différent. – Soros

2

Peut-être que vous devriez utiliser quelque chose comme ça

def lists_iteration(a,n): 
    for k in range(n): 
     b = [i - 1 for i in a] 
     print(b) 
     c = [i * 10 for i in b] 
     print(c) 
     d = [i/3 for i in c] 
     print(d) 
     a = [m/n for m,n in zip(d,a)] 
     print(a) 

ou juste pour la boucle de cette fonction.

+0

Je cours votre code. Il n'imprime rien. Il arrive le code de sortie 0. – Soros

+0

C'est une fonction qui accepte une liste comme 'a' et le nombre d'itérations comme' n'. Cela fonctionne sur mon Python 3.6.2. Vous devriez appeler la fonction pour voir vos listes intermédiaires. J'ai fixé la fonction: 'pour k dans la plage (n):' – Denis

+0

'a = [2, 4, 6, 8, 10] n = 8 pour k dans la gamme (n + 1): b = [i - 1 pour i en a] c = [i * 10 for i in b] d = [i/3 for i in c] a = [m/n de m, n dans zip (d, a)] print (a) 'Lorsque je cours au-dessus du code. Ça woks. Mais avec la fonction, non. Pouvez-vous m'expliquer la théorie derrière cela. Merci. – Soros

0
>>> a = [2, 4, 6, 8, 10] 
>>> x = [(i-1,(i-1)*10,((i-1)*10)/3) for i in a] 
>>> print x 
[(1, 10, 3), (3, 30, 10), (5, 50, 16), (7, 70, 23), (9, 90, 30)] 
>>> 
>>> b = [i[0] for i in x ] 
>>> print b 
[1, 3, 5, 7, 9] 
>>> c = [i[1] for i in x] 
>>> print c 
[10, 30, 50, 70, 90] 
>>> d = [i[2] for i in x] 
>>> print d 
[3, 10, 16, 23, 30]