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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這是什么類型的理解?

這是什么類型的理解?

喵喔喔 2022-06-28 17:59:02
我遇到了以下 Python 代碼,但無法理解它:''.join(random.choice(string.ascii_lowercase + string.ascii_uppercase + string.digits) for i in range(length))for循環告訴我這是一種理解,但是是什么類型的?這不是列表理解,因為[]缺少(除非這里有特殊的語法)。我試圖通過運行來解決它random.choice(string.ascii_lowercase + string.ascii_uppercase + string.digits) for i in range(length)直接在解釋器中,但在for.我做了一些挖掘,得出了一個不太確定的結論,這就是所謂的生成器理解,但我沒有找到任何看起來像這樣的例子;他們都使用()符號來創建生成器對象。那么,它是否像join()迭代器(以及生成器)一樣工作,我們實際上在這里有一個生成器語法?()如果是,我們可以在函數調用中創建生成器對象時省略周圍嗎?
查看完整描述

2 回答

?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

  1. 您需要join(),因為列表包含字符,并且您想要獲取一個字符串,因此join()

  2. random.choice()從參數列表中選擇隨機字符

  3. 參數列表包含 ASCII 大寫/小寫字符和數字

  4. 結果字符串的長度是length

總之,這行代碼生成一個隨機字符串,其長度length包含大寫/小寫字母和數字。

這是一個簡單的舊列表理解,只是[]缺少,因為您使用時不需要join()


查看完整回答
反對 回復 2022-06-28
?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

它創建了一個迭代器,就像在列表推導中一樣。以pythonwiki 中的這個例子為例:


# list comprehension

doubles = [2 * n for n in range(50)]


# same as the list comprehension above

doubles = list(2 * n for n in range(50))

兩者都是列表推導,但前一種情況更熟悉。我相信你的例子依賴于后一種情況。我鏈接的 wiki 將此稱為生成器表達式。


查看完整回答
反對 回復 2022-06-28
  • 2 回答
  • 0 關注
  • 113 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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