2017-02-12 11 views
1

Этот код приведен ниже, чтобы составить список большего числа двух списков в тех же позициях индекса. Как я могу переписать этот код с в то время как цикл вместо для цикл?сравнить списки с циклом while в python

a = [7,12,9,14,15,18,12] 
b = [9,14,8,3,15,17,15] 
big = [] 
for i in range(len(a)): 
    big.append(max(a[i],b[i])) 
print(big) 
[9, 14, 9, 14, 15, 18, 15] 

ответ

1

Использование zip и list comprehension:

a = [7, 12, 9, 14, 15, 18, 12] 
b = [9, 14, 8, 3, 15, 17, 15] 
big = [max(t) for t in zip(a, b)] 

Использование while:

a = [7, 12, 9, 14, 15, 18, 12] 
b = [9, 14, 8, 3, 15, 17, 15] 

big = [] 
i = 0 
while i < len(a): 
    big.append(max(a[i], b[i])) 
    i += 1 
1

Один из способов это с пока

a = [7, 12, 9, 14, 15, 18, 12] 
b = [9, 14, 8, 3, 15, 17, 15] 
big = [] 
i = 0 
while i < len(a): 
    big.append(max(a[i], b[i])) 
    i += 1 
print big 
2

Вы можете использовать, чтобы какашки первого элемента обоих списков каждый раз до a или b вычисляется как True (это содержит элементы):

In [15]: while a: 
      big.append(max(a.pop(0),b.pop(0))) 
    ....:  

In [16]: big 
Out[16]: [9, 14, 9, 14, 15, 18, 15] 
0

Вы можете попробовать это:

a = [7,12,9,14,15,18,12] 
b = [9,14,8,3,15,17,15] 
big = [] 
i=0 
while i<len(a): 
    if a[i]<b[i]: 
     big.append(b[i]) 
     i+=1 
    else: 
     big.append(a[i]) 
     i+=1 
print(big) 
0

Вы также можете попробовать zip() и список понимание, как так:

a = [7,12,9,14,15,18,12] 
b = [9,14,8,3,15,17,15] 
big = [max(c) for c in zip(a,b)] 
print big 

Выход:

[9, 14, 9, 14, 15, 18, 15]