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

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

Python 中的列表分配/創建顯示意外行為

Python 中的列表分配/創建顯示意外行為

弒天下 2022-12-14 20:54:54
我正在玩弄一段代碼,在此期間我偶然發現了 Python 的一些意外行為。我定義了一個列表如下:a = [1, 2, 3]用循環制作另一個列表:res = (item for item in a if a.count(item) > 0)print(list(res)) # [1, 2, 3] -- as expected -- Consider this is line 1后來我改變了第一個列表的初始值:a = [7, 2, 9]我原以為在創建之后res我所做的更改不會有任何變化,但令我驚訝的是,res 的值發生了變化。aresprint(list(res)) # prints [] -- Consider this as line 2更令人震驚的是打印的結果取決于第1行的打印語句,如果我在第1行注釋掉打印語句然后第2行打印[2]有人可以向我解釋這里發生了什么嗎?
查看完整描述

2 回答

?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

res = (item for item in a if a.count(x) > 0)創建一個通過調用耗盡的生成器list(res)。

當您調用下一個list(res)時,它返回空列表 -[]

考慮先創建一個列表,例如res = [item for item in a if a.count(x) > 0]。


查看完整回答
反對 回復 2022-12-14
?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

好的,我想我明白了,我不是在用那個循環創建另一個列表,而是在創建一個叫做生成器的東西。

它只能轉換為列表一次,這就是為什么如果我在第 1 行給出打印語句,它會打印 [] 的原因。

它會根據 a 的值修改自身,直到耗盡。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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