下面的代码是为了列出两个列表中相同索引位置中较大的数字。 如何使用重写此代码,而使用循环代替代替循环?在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]
下面的代码是为了列出两个列表中相同索引位置中较大的数字。 如何使用重写此代码,而使用循环代替代替循环?在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]
使用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
一种方法是用这个当
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
您可以使用pop()
为了每次直到a
或b
船尾两个列表的第一项为真值(它包含的项目):
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]
你可以试试这个:
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)
您也可以尝试用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]