亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

?return [x.upper() for x in L if isinstance(x, str)]這語句是怎么運行的?

def toUppers(L):
????return [x.upper() for x in L if isinstance(x, str)]
print toUppers(['Hello', 'world', 101])


嘗試了幾次分解寫法,都錯了,我想知道這句語句的運行過程是怎樣的

正在回答

3 回答

x.upper() for x in L if isinstance(x, str)? :將L里的第一個元素取出來,賦給x,isinstance(x, str)判斷x是否為字符串類型,是則返回true ,執行x.upper()變為大寫字母,如果返回false,則不執行x.upper()

0 回復 有任何疑惑可以回復我~
#1

2uo 提問者

看語句是能理解到,但是,我分開寫 for x in L: if isinstance(x,str): return x.upper() 這樣輸出的話就會在第一個滿足if條件后中止,結果看得出問題在哪,但是不知道該怎么調
2016-07-30 回復 有任何疑惑可以回復我~
#2

離鴻酹雨 回復 2uo 提問者

return語句用來從一個函數 返回 即跳出函數。 就是說在for x in L: if isinstance(x,str): return x.upper() 里return x.upper()之后就跳出了這個函數不再執行了,所以在第一個滿足if條件后中止。 因為這一段是在生成list里學習到,所以可以把滿足條件的x.upper()放到一個list 里,最后retuen 這個list。
2016-07-30 回復 有任何疑惑可以回復我~
#3

離鴻酹雨 回復 2uo 提問者

def toUppers(L): #return [x.upper() for x in L if isinstance(x, str) ] temp=[] for x in L: if isinstance(x,str): temp.append(x.upper()) return temp print toUppers(['Hello', 'world', 101])
2016-07-30 回復 有任何疑惑可以回復我~
#4

2uo 提問者

非常感謝!
2016-07-30 回復 有任何疑惑可以回復我~
#5

2uo 提問者 回復 離鴻酹雨

那就是漏掉了return返回結束語句的知識點,之前思路還是想寫一個L[x]來循環執行。謝謝了
2016-07-30 回復 有任何疑惑可以回復我~
查看2條回復

我看錯了

0 回復 有任何疑惑可以回復我~

我不明白 upper全部都轉換成大寫 為什么只是第一個呢

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
初識Python
  • 參與學習       758397    人
  • 解答問題       8967    個

學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序

進入課程

?return [x.upper() for x in L if isinstance(x, str)]這語句是怎么運行的?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號