2024-04-28 06:14:01 发布
网友
n=int(input()) a=list(map(int,input().split())) i,j=min(a),max(a) print(j-i,[(n*(n-1))//2,a.count(i)*a.count(j)][i!=j])
有人能解释最后一行吗? 我猜它使用列表理解,但是如何使用呢?如果我的猜测是错误的,那么你能描述一下一个人到底用了什么,并提供一些参考资料或者语法吗
马克说得对。他的回答更像Python
仅供将来参考。每当我不能马上读一行时,我就会尝试用更好的格式重写它,也许会添加新行和缩进
print( j-i, [ (n*(n-1))//2, a.count(i)*a.count(j) ][i!=j] )
为了方便起见,我删除了input()。将其替换为“5”和“1 2 3 4 5”
n=int("5") # n = 5 a=list(map(int,"1 2 3 4 5".split())) # a=[1, 2, 3, 4, 5] i,j=min(a),max(a) # (i, j) = (1,5)
现在我们有了 n=5;a=[1,2,3,4,5];i=1;j=5
然后我们可以从[(n*(n-1))//2,a.count(i)*a.count(j)]开始:
x = (n*(n-1))//2 = 10 y = a.count(i)*a.count(j) = 1
[(n*(n-1))//2 ,a.count(i)*a.count(j)] = [x,y] = [10,1]
现在我们把它放入:print(j-i,[(n*(n-1))//2,a.count(i)*a.count(j)][i!=j]) 打印(j-i[10,1][i!=j]) 然后我们有:
k = j-i = 4 l = [10,1][i!=j] = 1 print(k,l)
这使得:
>>> print(4,1) (4, 1)
不,不是。它构建一个2元素列表,然后利用True==1和False==0索引到列表中
True==1
False==0
一种更具Python风格的方法是:
print(j-i,(n*(n-1))//2 if i==j else a.count(i)*a.count(j))
马克说得对。他的回答更像Python
仅供将来参考。每当我不能马上读一行时,我就会尝试用更好的格式重写它,也许会添加新行和缩进
为了方便起见,我删除了input()。将其替换为“5”和“1 2 3 4 5”
我想你理解这一部分
现在我们有了 n=5;a=[1,2,3,4,5];i=1;j=5
然后我们可以从[(n*(n-1))//2,a.count(i)*a.count(j)]开始:
现在我们把它放入:print(j-i,[(n*(n-1))//2,a.count(i)*a.count(j)][i!=j]) 打印(j-i[10,1][i!=j]) 然后我们有:
这使得:
不,不是。它构建一个2元素列表,然后利用
True==1
和False==0
索引到列表中一种更具Python风格的方法是:
相关问题 更多 >
编程相关推荐