伊莉討論區

標題: Python關於抓取幾筆資料的count問題(已解決,感謝各位前輩) [打印本頁]

作者: chialewang    時間: 2019-8-16 12:08 AM     標題: Python關於抓取幾筆資料的count問題(已解決,感謝各位前輩)

提示: 作者被禁止或刪除 內容自動屏蔽
作者: codewice    時間: 2019-8-16 01:04 AM

第一個 print 的內容,是「回傳一個新的 list,新的 list 則是把原來的 list 重複五十遍」,但是「不會更改到原本的 list 內容」

所以你第二個 print 是去問「原來的 list 裡面有幾個 123」,答案就是 1

如果你想修改原來的 list,做法是

list1 = [123, 456]
list1 = list1 * 50
print(list1.count(123))

但這樣結果是 50,不會是 25  XDDDDD
作者: codewice    時間: 2019-8-16 01:20 AM

附註一下,通常程式裡面的等號「=」其實是 assignment (賦值) 的意思,跟數學裡面的等號不一樣。你可以把它「想像」成一個箭頭,把數值塞進去變數裡面

就像一般數學有先乘除後加減的優先順序,程式裡面也有運算的優先順序
看這篇文件
https://docs.python.org/3/refere ... ml#evaluation-order

Python evaluates expressions from left to right. Notice that while evaluating an assignment, the right-hand side is evaluated before the left-hand side.


Python 從左運算到右,但是遇到 assignement 的時候,會先運算右邊的東西。

回頭看 list1 = list1 * 50,這裡有兩個 operator 1. "="  2. "*"

先運算右邊的 list1 * 50 之後得到一個很長的 list,python 的執行環境會先把這個結果放在一個神秘隱晦你也不知道他叫什麼名字的變數裡面,此時你有兩個 list,一個是原來的 list1,一個是你不知道它叫什麼名字的 list。接著運算等號的時候,就把那個很長的 list 塞給了 list1。至於原本的 list1 那個短短的內容,就成為無主的孤兒,等著被系統回收掉。

ps. 上面的解釋跟 runtime 真實運作的情況不同,只是方便解說所以簡化了很多細節。
作者: ddttdtxb    時間: 2019-8-17 11:48 AM

補一個除錯… 也是學習技巧。
如果搞不清楚發生什麼事,就把它先印出來…
畢竟人又不是電腦,會記不住或記錯。 印出來最準。

所以把樓主的程式,多加一次 print 就能看出問題…
  1. list1 = [123,456]
  2. print(list1 * 50)

  3. # 不知發什麼事? 先印出來看看
  4. print('=====這是不讓資料混一起的分隔線=====')
  5. print(list1)
  6. print(list1.count(123))
複製代碼
另外補 3 點…
1. Python 不流行用分號(;) 作結尾,雖然不會出錯…  
(這就是我在其它文章說,先專精一種語言的原因)
2. eyny 的文章,有 code 輸入的語法…
(問程式最好要使用它,不然程式多,讀起來很痛苦,想回答的人就變少了)
3. 也可以多用線上免費資源… 像是 Repl.it epl.it 之類…
(回答問題的人可以直接執行你的程式,不必由腦袋去想,去猜)

剛剛的程式可以用 這樣 來分享
作者: chialewang    時間: 2019-8-17 12:00 PM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: chialewang    時間: 2019-8-17 12:05 PM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: ddttdtxb    時間: 2019-8-18 03:39 PM

輸入框上頭有個長得像 "<>" 符號的按鈕… 那個就是了讓你輸入程式碼的東東…
  1. 或是自己輸入[code][/ code]也行
複製代碼

作者: chialewang    時間: 2019-8-18 06:04 PM

提示: 作者被禁止或刪除 內容自動屏蔽




歡迎光臨 伊莉討論區 (http://1.eyny.com/) Powered by Discuz!