【发布时间】:2020-07-04 22:04:39
【问题描述】:
我得到了两个列表,比如 list1 和 list2。我必须以这样一种方式排列 list1 的元素,即在特定索引处,list1 的元素大于 list2 的元素。我们必须找出 list1 中有多少这样的元素。 例如:
list1=[20,30,50]
list2=[60,40,25]
这里只有元素索引 2 更大,即 50>25,但是如果我们在 list1 中交换 50 和 30 所以,
list1=[20,50,30]
list2=[60,40,25]
然后 50 > 40(在索引 1 处)和 30 > 25(在索引 2 处)。所以我们得到了 2 个元素 50 和 30,它们在各自的索引中都更大。 这是我的方法
def swap(a,b):
a,b=b,a
return a,b
n=3
g=list(map(int,input().split()))
o=list(map(int,input().split()))
c=0
for i in range(n):
if o[i]>g[i]:
for j in range(i+1,n):
if g[j]>o[i]:
g[i],g[j]=swap(g[i],g[j])
c+=1
break
else:
c+=1
print(c)
但是对于
list1= [3,6,7,5,3,5,6,2,9,1]
list2= [2,7,0,9,3,6,0,6,2,6]
它给出 c=6 但预期输出是 c=7
【问题讨论】:
-
最终列表的顺序重要吗?
-
这不是一个 Python 问题,而是一个算法问题。也许建议用伪代码的算法?
-
20 不大于 60 时,为什么 20 和 60 留在原来的索引位置?
-
@ChrisDoyle 因为 list1 中没有大于 60 的元素
-
那么您的预期输出是什么?列表 1 中有多少元素大于列表 2 中的元素?
标签: python python-3.x list list-comparison