iT邦幫忙

2023 iThome 鐵人賽

DAY 7
1
自我挑戰組

待業不頹廢系列 第 7

Day 7 . 欸 今天要幹嘛 - 索引值:切片(slicing)

  • 分享至 

  • xImage
  •  

行前提要

當初只是想說,如果我只要前三筆的作者名字,那......,相反的後三筆呢
所以就學習到"切片"這玩意

切片(slicing)語法通常使用冒號 :
:表示切片的開始和結束位置
字面上意思是這樣,實際應用繼續往下走吧

我們利用最前面陽春版本來變化題一下

# 變化 只選前幾個
import requests
from bs4 import BeautifulSoup

url = "https://astro.5xruby.tw/testimony/"
response = requests.get(url)
response.encoding = "utf-8"
soup = BeautifulSoup(response.text, "html.parser")
author_infos = soup.find_all("h4", class_="is-author")

for author in author_infos:
    print(author.text)

在 python 中取最後 XX 個

先來說說後四筆好了,附上程式碼以及成果圖

# # 變化 取最後四個
import requests
from bs4 import BeautifulSoup

url = "https://astro.5xruby.tw/testimony/"
response = requests.get(url)

response.encoding = "utf-8"
soup = BeautifulSoup(response.text, "html.parser")

author_infos = soup.find_all("h4", class_="is-author")
# 取得最後四個作者
last_four_authors = author_infos[-4:]

for author in last_four_authors:
     print(f"Author: {author.text}")

https://ithelp.ithome.com.tw/upload/images/20230922/20150181jXG7aRnwcy.png

  • author_infos[ -4 ] >>> 叫做索引值,代表倒數第四個座標的
  • author_infos[ -4: ] >>> 叫做切片,多了這個冒號,可不一樣了。代表起始點[ -4 ]開始往後切都要,全包起來
    關鍵在 [-4:]就是切片,利用 切索引值並匡列要的區段,在用迴圈來歷遍,就可以獲得啦
last_four_authors = author_infos[-4:]
for author in last_four_authors:
     print(f"Author: {author.text}")

切片 來切看看啊

my_list = [1, 2, 3, 4, 5]

print (my_list[ 0: ]) >>> [1, 2, 3, 4, 5] >>> 冒號後面沒指定是省略,就是到底都要打包起來
print (my_list[ : ])  >>> [1, 2, 3, 4, 5] >>> 從頭0位置開始的話,冒號前可省略,所以前後都省略只剩冒號,全包的意思
print (my_list[ 0 ])  >>>  1
print (my_list[ :0 ]) >>> [],開始的位置 跟 座標零 之間 >>>是"空字串"

⬆️⬆️⬆️⬆️⬆️⬆️
上面展示了 0: 的各種效果
還不夠,再練習一下,並且有正座標以及負座標

print (my_list[ 3: ]) >>> [4, 5] , [3]是4,冒號後面沒指定是省略,就是到底都要打包起來
print (my_list[ :3 ]) >>> [1, 2, 3],前面省略,所以是從頭開始並切到[3]開始都不要

print (my_list[ -1 ]) >>> 5
print (my_list[ -1: ]) >>> [5]
print (my_list[ :-1 ]) >>>[1, 2, 3, 4],從頭開始都要一路切到[-1]


print (my_list[ :4 ]) >>> [1, 2, 3, 4],冒號就像是刀,切一刀[4]開始都不要
print (my_list[ 4: ]) >>> [5]

print (my_list[ -4: ]) >>> [2, 3, 4, 5],[-4]對過去是 2 ,冒號後面被省略,所以是 2 開始往後全都要
print (my_list[ :-4 ]) >>> [1]

大致上就是這樣的切法


在 python 中取前面 XX 個

要前三個,本來迴圈已經歷遍出有哪些作者了
現在來限制迴圈,走幾次就好


# 設置一個計數器
count = 0
for author in author_infos:

  if count < 3:  # 檢查次數是否小於3
          print(f"Author: {author.text}")
          count += 1
  else:
      break  # 如果計數達到3,退出迴圈

跟網頁核對過了果然是前三筆沒錯
https://ithelp.ithome.com.tw/upload/images/20230922/20150181Yj7rl9GtCF.png

  • count += 1
    寫法 ruby 跟 py 是一樣的,遞增。

  • if count < 3: 冒號的部分
    冒號 : 在 Python 中是一個標誌著程式碼塊"開始的符號"
    它表示接下來的程式碼將是在 if 條件成立的情況下執行的。
    for 迴圈也是同樣意思哦!
    (題外話 之前的記憶中 ruby 倒是不需要這樣)

    忘記冒號了嗎?錯誤訊息來提醒你,冒號是不能省略的唷

    File "/Users/yojijun/Desktop/python/ex3.py", line 17
    if count < 3  # 檢查計數是否小於3
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
    SyntaxError: expected ':'
    

小結

今日份的自言自語結束
如果不小心路過的大大們有發現什麼重大瑕疵,歡迎鞭策(σ`∀´)σ :欸嘿(指


上一篇
Day 6 . 欸 今天要幹嘛 - 優化、整理中學習
下一篇
Day 8 . 欸 今天要幹嘛 - 錯誤訊息 AttributeError
系列文
待業不頹廢30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言