水仙花數也被稱為超完全數字不變數、自戀數、自幂數、阿姆斯壯數或阿姆斯特朗數,嚴格的定義水仙花數,是指一個 3 位數,它的每個位上的數字的 3次幂之和等于它本身。如371 = 3^3 7^3 1^3,則371是一個水仙花數。
Python中的求解思路根據水仙花數的定義,可以理出下面的編程思路:
代碼如下圖所示:
注意,在将一個整數i分解出個位數a、十位數b和百位數c時,個位數a是i除以10後得到的餘數,百位數c是i除以100後得到的餘數,而十位數則是先将i整除10後得到整數部分,再将整數部分除以10後得到的餘數數即為十位數,上面代碼運行結果如下,得到所有的水仙花數為[153,370,371,407]:
使用列表推導式對代碼進行優雅的改進
上面代碼求解水仙花數時,實際代碼行數為第9-15行共7行代碼,太複雜了些,下面使用列表推導式作以下改進,代碼如下:
将上面的7行代碼寫為第11行隻有1行代碼,運行結果仍然相同,即所有的水仙花數為[153,370,371,407],很明顯,代碼簡化了太多。
另外,關于列表推導式,其通用的書寫形式如下:
[表達式 for 變量 in 列表] 或者 [表達式 for 變量 in 列表 if 條件]
結論列表推導式是Python語言中一項獨有的特性,使用推導式可以從一個數據序列根據一定的條件方便的構建出另一個新的數據序列。
從現在開始,善用列表推導式,做一個合格的優雅的pythoner吧。
歡迎加關注,共同交流。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!