2017-02-12 105 views
1

下面的代码是为了列出两个列表中相同索引位置中较大的数字。 如何使用重写此代码,而使用循环代替代替循环?在python中使用while循环比较列表

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

使用ziplist 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

您可以使用pop()为了每次直到ab船尾两个列表的第一项为真值(它包含的项目):

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]