課程
/后端開發
/Python
/python進階
為什么print會多一個空字符
2020-06-23
源自:python進階 2-6
正在回答
頂一樓老哥
這個問題非常有意思了?
首先, 你的兩個程序的結果可不僅僅是多出一個空字符的問題,而是function的返回值問題.
filter(is_sqr, range(101)) 用于過濾range(101)中不符合條件(is_sqr)的元素,返回一個迭代器對象,range-class的每個元素作為參數傳遞給is_sqr進行判斷,然后返回 True 或 False,最后將返回 True 的元素放到新列表中。
figure-1 中的代碼其實相當于
def?is_sqr(x) ????if?math.sqrt(x)%1==0: ????????print(x) ????return?0
因此, 相當于得到一個len=100的 一個list ([False ,False ,False ,False ,False .....]), 因此print的是空[]
figure-2 中的代碼相當于
def?is_sqr(x) ????if?math.sqrt(x)%1==0: ????????return?x ????else: ????????return?0
等價于得到一個有True 有False的list 因此print的是[1,4,9,16,25,36,49,64,81,100]
舉報
學習函數式、模塊和面向對象編程,掌握Python高級程序設計
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2020-08-08
頂一樓老哥
2020-06-24
這個問題非常有意思了?
首先, 你的兩個程序的結果可不僅僅是多出一個空字符的問題,而是function的返回值問題.
filter(is_sqr, range(101)) 用于過濾range(101)中不符合條件(is_sqr)的元素,返回一個迭代器對象,range-class的每個元素作為參數傳遞給is_sqr進行判斷,然后返回 True 或 False,最后將返回 True 的元素放到新列表中。
figure-1 中的代碼其實相當于
因此, 相當于得到一個len=100的 一個list ([False ,False ,False ,False ,False .....]), 因此print的是空[]
figure-2 中的代碼相當于
等價于得到一個有True 有False的list 因此print的是[1,4,9,16,25,36,49,64,81,100]