2017-08-28 2 views
0

Ich möchte bis N-mal meine Liste iterieren. Dies ist mein Beispielcode.Wie wiederhole ich mehrere zusammenhängende Listen bis zur angegebenen Anzahl in 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) 

Zum Beispiel möchte ich Iteration 10 mal über alle Listen tun. Aber ich möchte diese Codes nicht zehnmal schreiben. Gibt es einen effizienten Weg, um meine gewünschten Ergebnisse zu erhalten? Danke im Voraus.

+3

eine Funktion für die Iteration Logiken schreiben und die Liste 'a' als Argument übergeben dazu .. !! – Rajez

Antwort

2

Wenn Sie tatsächlich nicht über die Zwischenlisten benötigen, können Sie alle Mathematik ops miteinander kombinieren:

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

Ich führe deinen Code aus. Es druckt nichts. Es passiert Exit Code 0. – Soros

+0

a = [2, 4, 6, 8, 10] n = 10 für k in Bereich (n): a = [(i - 1) * 10/(3 * i) for i in a] Drucken (a) Das funktioniert. Ich weiß nicht, was das anders ist. – Soros

2

Vielleicht sollten Sie so etwas wie diese

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) 

oder nur für Schleife aus dieser Funktion verwenden.

+0

Ich starte deinen Code. Es druckt nichts. Es passiert Exit-Code 0. – Soros

+0

Es ist eine Funktion, die eine Liste als "a" und Anzahl der Iterationen als "n" akzeptieren. Es funktioniert auf meinem Python 3.6.2. Sie sollten die Funktion aufrufen, um Ihre Zwischenlisten zu sehen. Ich habe feste Funktion: 'für k in Bereich (n):' – Denis

+0

'a = [2, 4, 6, 8, 10] n = 8 für k im Bereich (n + 1): b = [i - 1 für i in] c = [i * 10 für i in b] d = [i/3 für i in c] a = [m/n für m, n in zip (d, a)] Drucken (a) 'Wenn ich über Code laufen. Es geht um. Aber mit der Funktion nicht. Kannst du mir die Theorie dahinter erklären? Danke. – 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] 
Verwandte Themen