爲什麼此映射在命令行中不起作用?命令行中的Python命令未執行
只是默默地失敗:
python -c "x=range(1000);map(lambda l: print(l), x)"
的map
應該遍歷range
,因爲它的工作原理的Python REPL裏面。
爲什麼此映射在命令行中不起作用?命令行中的Python命令未執行
只是默默地失敗:
python -c "x=range(1000);map(lambda l: print(l), x)"
的map
應該遍歷range
,因爲它的工作原理的Python REPL裏面。
你可能嘗試與python2.x運行(以確保嘗試運行python --version
)
在Python 2 lambda l: print(l)
是無效的,因爲印刷是不是正規的函數/方法。
嘗試運行
python3 -c "x=range(1000);map (lambda l:print(l), x)΅
如果你想一個解決方案,與兩個版本兼容,請嘗試:
python -c "x=range(1000); print('\n'.join(map(lambda l: str(l), x)))"
獎勵: 溶液使用列表理解:
python -c "x=range(1000); print('\n'.join([ str(l) for l in x ]))"
'map(print,x)'和'map(str,x)'更簡潔一些,不需要'lambda's。 –
當您運行此代碼(在python 3中)時,代碼運行正常。然而,該代碼返回的是一個映射對象,其中包含的說明打印的數字,因爲在這裏顯示
>>> x=range(1000);map (lambda l:print(l), x)
<map object at 0x6ffffd0cba8>
爲了讓數字來打印,你會需要遍歷在地圖上,像
>>> x=range(1000)
>>> y=map (lambda l:print(l), x)
>>> for n in y:
... pass
...
0
1
2
3
4
5
6
7
8
etc.
試調用'python3 -c ...'''python'通常是Python 2 –
Side-note:Usin g'map'的副作用被認爲是不好的形式;它是非常糟糕的,因爲你不必要地依賴'lambda'函數('map(print,x)'將是相同的,並且不涉及來自'lambda'包裝的無意義的減速/冗長)。一個更好的解決方案是:print(* x,sep =「\ n」)'一次打印所有文件(適用於小輸出序列,但不適用於數百萬輸出),或者只使用顯式循環'for l in x :print(l)'(儘管後者可能不適合單線運動員)。如果你必須'map',只需'list' - 如果強制'map'運行:'list(map(print,x))'。 – ShadowRanger