一个遍历两个列表并返回包含较大元素的列表的循环?

时间:2015-04-21 07:03:17

标签: python list loops element

例如,

listOne = [1,2,6]
listTwo = [3,2,4]

checkLists(listOne, listTwo)

should return [3,2,6]

1< 3因此[3,?,?]

2 = 2因此[3,2,?]

6> 4因此[3,2,6]

我最近启动了python,并且不知道如何使用一次检查两个列表的循环。

4 个答案:

答案 0 :(得分:7)

您可以使用list comprehension制作新列表 您可以使用zip一次迭代两个列表 您可以使用max为您提供两个项目中的较大项目。

def checkLists(a, b):
    return [max(ai, bi) for ai, bi in zip(a,b)]

这给出了:

>>> checkLists([1,2,6], [3,2,4])
[3, 2, 6]

答案 1 :(得分:4)

您可以在此处使用map内置功能:

result_iter = map(max, list_one, list_two)

将在Python 2上创建一个列表,在Python 3上创建一个迭代器(一个地图对象) - 如果你需要一个列表,在Python 3上用map包裹list()

result_list = list(map(max, list_one, list_two))

示例:

>>> list_one = [1, 2, 6]
>>> list_two = [3, 2, 4]
>>> list(map(max, list_one, list_two))
[3, 2, 6]

这是如何工作的map函数将1个函数作为参数,然后是1到n个迭代;迭代迭代同时迭代,它们的值作为参数传递给给定的函数;从函数返回的任何内容(在这种情况下为max)都会从map生成到结果值中。

答案 2 :(得分:3)

[max(x,y) for x,y in zip(listOne, listTwo)]

答案 3 :(得分:0)

listOne = [1,2,6]
listTwo = [3,2,4]

import itertools
def checkLists(listOne, listTwo):
    lsttmp=[]
    for i , j in itertools.izip(listOne,listTwo):

        lsttmp.append(max(i,j))
    return  lsttmp
print checkLists(listOne, listTwo)