Я хочу повторить мой список в N-й раз. Это мой пример кода.

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)

Например, я хочу сделать итерацию 10 раз по всем спискам. Но я не хочу писать те же самые коды 10 раз. Есть ли эффективный способ получить желаемые результаты? Заранее спасибо.

0
Soros 28 Авг 2017 в 08:04

3 ответа

Лучший ответ

Если вам не нужны промежуточные списки, вы можете объединить все математические операции в один:

def func(a, n):
   for _ in range(n):
      a = [(i-1)*10/(3*i) for i in a]
   return a
2
Moses Koledoye 28 Авг 2017 в 05:34
>>> 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]
0
Kallz 28 Авг 2017 в 05:31

Может быть, вы должны использовать что-то вроде этого

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)

Или просто для цикла из этой функции.

2
Denis 28 Авг 2017 в 06:43