给出您在大学运动日的参与者得分表, 您需要找到亚军得分。您会得到分数。 将它们存储在列表中,并找到亚军的得分。
输入格式
第一行包含N。第二行包含N的数组 整数,每个整数之间用空格隔开。
我找到了这个解决方案
n = int(input())
nums = map(int, input().split())
print(sorted(list(set(nums)))[-2])
有人可以解释一下为什么我们在这里使用map函数吗?
如果有人可以向我解释这一行:
nums = map(int, input().split())
答案 0 :(得分:3)
所以我们可以走这行:
nums = map(int, input().split())
并将其分为几个子部分:
nums_in = input()
nums_split = nums_in.split()
nums = map(int, nums_split)
按顺序,nums_in
将是作为字符串读取的数字的列表。对于输入字符串"1 5 73 29"
,它将为:
nums_in = "1 5 73 29"
nums_split
将是每个数字分成一个字符串的数字列表:
nums_split = ["1", "5", "73", "29"]
现在,map
函数将在列表(在此情况下为int
)中的每个项目上调用函数(在这种情况下为"1", "5", "73", "29"
),并使用函数返回的值。因此,对于此示例:
nums = [1, 5, 73, 29]
map
function in Python 2总是返回一个列表,因此在Python 3中,我们需要再增加一个步骤:
nums = list(map(int, nums_split))
或者,在list comprehension中使用我最喜欢的Python结构之一:
nums = [int(n) for n in nums_split]
答案 1 :(得分:1)
map()函数将给定函数应用于可迭代的每个项,并返回结果列表。 然后,可以将map()(地图对象)的返回值传递给list()(创建列表),set()(创建集合)等函数。
示例1:map()如何工作?
def calculateSquare(n):
return n*n
numbers = (1, 2, 3, 4)
result = map(calculateSquare, numbers)
print(result)
# converting map object to set
numbersSquare = set(result)
print(numbersSquare)
运行程序时,输出为:
<map object at 0x7f722da129e8>
{16, 1, 4, 9}
map()函数可迭代地为每个项目执行一个指定的函数。该项作为参数发送到函数。
map(function, iterables)
Map将函数应用于input_list中的所有项目。
在大多数情况下,我们希望将所有列表元素一一传递给一个函数,然后收集输出。例如:
items = [1, 2, 3, 4, 5]
squared = []
for i in items:
squared.append(i**2)
Map允许我们以一种更简单,更好的方式来实现它。在这里,您去了:
items = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, items))
map不是特别的pythonic。我建议改用列表推导:
map(f, iterable)
基本上等同于:
[f(x) for x in iterable]
单独的map不能执行笛卡尔积,因为其输出列表的长度始终与输入列表相同。您可以通过列表理解来简单地做笛卡尔积:
[(a, b) for a in iterable_a for b in iterable_b]
语法有点混乱-基本上等同于:
result = []
for a in iterable_a:
for b in iterable_b:
result.append((a, b))
答案 2 :(得分:1)
最蟒蛇的方式, 使用filter()仅过滤列表中的第二个最大值。
if __name__ == '__main__':
n = int(input())
arr = list(map(int, input().split()))
maxv = max(arr)
l = list(filter(lambda x: x != maxv,arr))
print(max(l))
答案 3 :(得分:0)
Map是一个非常简单的内置函数。
因此,它将function
应用于可迭代序列中的每个项目,即sequence
map(function, sequence)
因此,在您的情况下,nums = map(int, input().split())
input()。split()返回一个列表。对于该列表中的每个项目,都将应用功能int
。
在语法上等于
ls = []
for item in items: # here items is the sequence returned by split
res = int(item)
ls.append(res)
# ls will be list that the map returns.
因此,您输入中由split()
函数分隔的所有项目都映射到int()函数。因此,所有项目都将转换为int类型。
答案 4 :(得分:0)
我用这个解决了,问我是否需要我解释!
for (int col = 0; row < NUM_COLS; row++)
答案 5 :(得分:0)
我已经准备了使用Map功能的程序,它将帮助您从插入的列表中找到亚军得分手。
import heapq
n = int(input())
arr = []
number = map(int, input().split())
arr = (list(set(number)))
m = sorted(set(arr))[-2]
arr.sort(reverse = True)
m = heapq.nlargest(2,arr)
print(m[1])
答案 6 :(得分:0)
我已经使用排序功能解决了这个问题,然后删除了最大条目,使用for循环重复了该条目的次数,然后从最后一个打印了第一个条目,从列表中找到了亚军得分
n = int(input('enter the size of list:'))
arr = list(map(int, input('Enter entries with space:').split()))
arr.sort()
k = arr[0]
for i in arr:
if i > k:
k = i
for l in range(arr.count(k)):
arr.remove(k)
print(arr[-1])
答案 7 :(得分:0)
您也可以通过这种方式进行操作。首先,我们应确保没有重复项,因此我们将根据给定的值进行设置以删除重复项,然后按降序对其进行排序。然后,我们打印出列表的索引1处的第二个最大值。
if __name__ == '__main__':
n = int(input())
arr = map(int, input().split())
arr_set = set(arr)
arr_list = list(arr_set)
arr_list.sort(reverse = True)
print(arr_list[1])
答案 8 :(得分:0)
到目前为止,我发现此答案是最简单,最有效的。
ordered = sorted(set(list(arr)))
最后,只需打印订购的套并询问倒数第二个[-2]值。
打印(订购[-2])
答案 9 :(得分:0)
以下是编写“亚军得分!”的非Python方式。码。对于刚刚从C / C ++转到python3的业余编码人员来说,这是有益的。由于我们大多数人对python中的映射概念不太满意,因此最后(在此处)创建了一个附加列表。希望你喜欢!
n = int(input())
arr = map(int, input().split())
lst=[]
for i in arr:
lst.append(i)
lst.sort(reverse=True)
max=lst[0]
for i in range(len(lst)):
if lst[i]==lst[i+1]:
continue
else:
max=lst[i+1]
break
print(max)
答案 10 :(得分:0)
def remove_duplicate(arr):
li = []
for n in arr:
if n not in li:
li.append(n)
return li
if __name__ == '__main__':
n = int(input())
arr = list(map(int, input().split()))
arr.sort()
arr=remove_duplicate(arr)
print(arr[-2])
答案 11 :(得分:0)
这是我对同一问题的解决方案,使用set()
删除重复项,然后使用sort()
反过来查找所需的元素。希望这是解决这个问题的最简单方法。
if __name__ == '__main__':
n = int(input())
arr = map(int, input().split())
x = set(arr)
x = list(x)
x.sort(reverse=True)
print(x[1])
答案 12 :(得分:0)
Variables ../data/variables.yaml
答案 13 :(得分:-1)
if __name__ == '__main__':
n = int(input())
arr = map(int, input().split())
x=sorted(list(arr))
a=x[-1]
for i in range(len(x)):
if x[i]==a:
print(x[i-1])
break
答案 14 :(得分:-1)
A = []
n = int(input("Enter no. of Integers : "))
for i in range(0, n):
ele = int(input())
A.append(ele)
print(A)
j = set(A)
j1 = list(j)
j1.sort(reverse=True)
print(j1)
print(j1[1]
答案 15 :(得分:-2)
目标是找到亚军。要获得亚军,我们必须先对列表进行升序排序,然后获得列表的第二位。
print(sorted(set(arr))[-2])