這個問題來自基本數據類型的hackerrank問題。當我運行爲什麼Python 3中的地圖對象需要轉換爲列表才能理解?
max(map(int, range(5)))
我得到的4右聲道輸出,但是當我做
if __name__ == '__main__':
n = int(input()) #this line seems irrelevant to my question, but it was present in the original question so I have included it here for completeness
arr = map(int, input().split())
print(max([x for x in arr if x < max(arr)]))
,給輸入
5
2 3 6 6 5
結果是2但是,如果我第一次投的將對象映射到列表我得到正確的答案5.這更令人困惑,因爲當我用
替換打印參數時它給出了6的正確答案,所以清楚地說最大的作品,但我猜測列表中的某些東西由於某種原因在地圖對象上斷裂。這是特別的事實,如果我做
print([x for x in arr if x < max(arr)])
我得到2與其它不太有序列表更多的測試顯示,最後一條語句似乎總是返回列表(ARR)支持[0],所以最終我期待問題在於地圖對象上的列表理解。所以最終我想知道的是
- Python 3.5.x如何處理導致失敗的地圖對象和列表解析?
- 有沒有什麼方法可以以一種直接的方式成功處理地圖對象,並且不需要執行轉換?
好的,這是有道理的,所以基本上列表數據類型允許多次迭代。我做了一些測試與其他迭代操作,如理解沒有最大值,它似乎撐起了。謝謝你的時間! (一旦時間鎖定結束,我會接受) –