濮阳杆衣贸易有限公司

主頁 > 知識庫 > 基于python for in if 連著寫與分開寫的區(qū)別說明

基于python for in if 連著寫與分開寫的區(qū)別說明

熱門標(biāo)簽:江蘇客服外呼系統(tǒng)廠家 工廠智能電話機器人 千陽自動外呼系統(tǒng) 原裝電話機器人 清遠360地圖標(biāo)注方法 在哪里辦理400電話號碼 西藏智能外呼系統(tǒng)五星服務(wù) 400電話申請服務(wù)商選什么 平頂山外呼系統(tǒng)免費

如下:

links.extend(link for link in get_links(html) if re.match(link_regex, link))
# 上面的語句分開寫,如下
# 但下面需要使用links.append,如果依然使用links.extend會出現(xiàn)錯誤的結(jié)果
for link in get_links(html):
  if re.match(link_regex, link):
     links.append(link)

讓我們用ipython做個實驗:

由上圖可以看出,for in if 連擊推導(dǎo)式隱式的將link由str轉(zhuǎn)變?yōu)榱薼ist,而分開寫是不會幫我們轉(zhuǎn)換的,所以需要使用append把整個str加入到list.

補充:python的for i in list 陷阱

d = [1,2,3,4,5]
for i in d:
  d.remove(i)
print d

結(jié)果是 :

[2, 4]

這個陷阱比較隱蔽,我再用白盒子測試的時候,發(fā)現(xiàn)了這個bug,大致原因就是remove d[0]之后,i 自動變成了 d[1], 但是 d已經(jīng)變成了 d[2,3,4,5],所以i=d[1]就悲催的指向了3,跳過了2!

看來python還是要注意了解底層實現(xiàn)啊!

解決辦法是

d = [1,2,3,4,5]
for i in d[:]:
  d.remove(i)
print d

就可以實現(xiàn)邊遍歷邊刪除了

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Python中在for循環(huán)中嵌套使用if和else語句的技巧
  • python中for in的用法詳解
  • Python for循環(huán)及基礎(chǔ)用法詳解

標(biāo)簽:天水 日照 安慶 白城 隨州 股票 錦州 西安

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《基于python for in if 連著寫與分開寫的區(qū)別說明》,本文關(guān)鍵詞  基于,python,for,連著,寫,與,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《基于python for in if 連著寫與分開寫的區(qū)別說明》相關(guān)的同類信息!
  • 本頁收集關(guān)于基于python for in if 連著寫與分開寫的區(qū)別說明的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    桦甸市| 昆明市| 革吉县| 霍林郭勒市| 五大连池市| 凤山县| 绵竹市| 原阳县| 建平县| 屏南县| 安泽县| 彭山县| 滨海县| 称多县| 株洲市| 苏尼特右旗| 岑巩县| 班玛县| 曲沃县| 涡阳县| 西平县| 驻马店市| 临桂县| 荆门市| 高安市| 灵山县| 武隆县| 广饶县| 阜平县| 雷波县| 清丰县| 建昌县| 镇平县| 繁峙县| 盈江县| 定陶县| 壶关县| 安仁县| 称多县| 清水河县| 洪湖市|