Python 比较两个列表中的值,并在第三个列表中导入较大的值
几天前,我开始学习python和编程,只是为了好玩,我遇到了一个小障碍。 我试图比较两个用户生成列表中的值,并在第三个列表中的每个计数器增量之间添加较大的值,例如: a=[1 2 3] b=[3 4 1] 结果应该是 c=[3 4 3]Python 比较两个列表中的值,并在第三个列表中导入较大的值,python,list,compare,Python,List,Compare,几天前,我开始学习python和编程,只是为了好玩,我遇到了一个小障碍。 我试图比较两个用户生成列表中的值,并在第三个列表中的每个计数器增量之间添加较大的值,例如: a=[1 2 3] b=[3 4 1] 结果应该是 c=[3 4 3] sa = input("The first list is: ") myList = list(map(int, sa.split())) sb = input("The second list is: ") myList2 = list(map(int, sb
sa = input("The first list is: ")
myList = list(map(int, sa.split()))
sb = input("The second list is: ")
myList2 = list(map(int, sb.split()))
myList3 = []
i=0
for i in range(len(myList)):
if myList[i] > myList2[i]:
myList3[i] = myList[i]
else: myList3[i] = myList2[i]
print(myList3)
到目前为止,这是我的代码,但我得到了一个“索引器:列表分配索引超出范围”您需要执行
myList3.append(myList[i])
和myList3.append(myList2[i])
而不是myList3[i]=myList[i]
和myList3[i]=myList2[i]
,因为索引还不存在,所以您不能直接将其分配给列表
In [66]: zip(a, b)
Out[66]: ((1, 3), (2, 4), (3, 1))
遍历序列,找出压缩的元组的max
项
In [64]: [max(i) for i in zip(a, b)]
Out[64]: [3, 4, 3]
请注意,一种更具python风格的方法是:
a = [1, 2, 3]
b = [3, 4, 1]
c = [max(i) for i in zip(a, b)]
print(c) # [3, 4, 3]
如果两个列表
的项目数不相同,则可以从itertools
使用:
from itertools import zip_longest
a = [1, 2, 3, 7]
b = [3, 4, 1]
c = [max(i) for i in zip_longest(a, b, fillvalue=0)]
print(c) # [3, 4, 3, 7]
c=[max(a_项,b_项)对于a_项,b_项在zip中(a,b)]
或列表(map(max,a,b))
只要myList
的长度大于myList2
OP的长度,就会出现错误,请注意,对于myList中的item,最好像myList中的item那样循环执行,或者如果您确实需要索引,对于i,enumerate中的item(myList)
我应该在代码中的什么位置添加这些索引?在for循环之前我已经尝试过了,但仍然得到了超出范围的错误哦,对不起,不是myList3[I]=myList[I]
和它下面的另一个调用