项目列表作为地图对象存在。我必须对此进行2次迭代才能得到答案。无需转换为列表是否可以?
if __name__ == '__main__':
arr = map(int, input().split())
large = 0
for item in arr:
if item > large:
large = item
print(large)
second = 0
for item in arr:
if item < large and item > second:
second = item
print(second)
输入“ 2 3 4 6 6”的预期结果为 6 4
以上代码的结果是 6 0
答案 0 :(得分:1)
此代码在单个循环中复制代码的行为。
if __name__ == '__main__':
arr = map(int, input().split())
large = 0
second = 0
for item in arr:
print('%s %s %s %s %s' %(item, large, second, item < large, item > second))
if item > large:
second = large
large = item
elif item < large and item > second:
second = item
print(large)
print(second)
答案 1 :(得分:0)
根据map
的文档:Return an iterator that applies function to every item of iterable, yielding the results.
迭代器是单向的,有another question about "resetting" iterators, top answer is explaining why it may be a bad idea。
在使用input()
而不是文件时,将无法以相同的方式重新创建迭代器,因此最好的方法是创建列表。
但是,查看您的代码,您将能够一次完成该操作。 ;)-我不会张贴代码,因为它看起来像是一个编码练习,仅说明如何执行此操作:在第一次运行时已经使用了两个变量(或2元素元组或2元素列表)。新数字大于两者?更改两个值。他们之间有新号码吗?仅更改第二个。
答案 2 :(得分:0)
我们可以遍历单循环,并且我们需要假设max和second max作为第一个元素而不是0,因为数组中的元素也可以为负数
if __name__ == '__main__':
arr = map(int, input().split())
large = arr[0]
second_large = arr[0]
for item in arr:
if item > large:
large = item
if item < second_large:
second_large = item
print(large, second_large)