python通過一個語句分析幾個常用函數和概念

來源:互聯網
上載者:User

標籤:取出   難解   網上   text   事先   思維   for   iterable   如何   

前言

過年也沒完全閑著,每天用一點點時間學點東西,本文為大家介紹幾個python操作的細節,包含all、any、for in等操作,以及介紹我解決問題的思路。

一、開篇

先從我看到的一個簡單的語句開始。

text = '拍照'any(word in text for word in ["拍照", "拍張照"])

剛看到這個語句的時候我整個人完全懵住了,完全看不懂這是幹啥的。不過其實編程難的不是這些東西,這些東西再也不怕,也能想辦法解決掉,而隱藏在這後面的編程思維及數學等知識是很難解決的。

1.1 any、all

言歸正傳,看到這個語句後,我想到的就是如何將複雜的問題簡單化。

於是我先查了一下any函數,查到any和all函數都是對於集合而言的。any函數用於判斷給定的可迭代參數iterable是否全部為空白對象,如果都為空白、0、false中的一種(以下簡稱為空白),則返回False,如果不都為空白,則返回True;而all函數剛好相反,如果全不為空白,則返回True,否則返回False。

1.2 for in

這就是說上面的語句any裡面是一個iterable對象。我們再來看一下裡面的語句:

text = '拍照'(word in text for word in ["拍照", "拍張照"])

可以明顯的看到一個for,for in在python裡面很明顯,簡單的說就是迴圈一個集合,並對此集合進行過濾、計算等操作。同樣先簡化它:

(word for word in ["拍照", "拍張照"])

這很明顯,產生的集合與原來相同,但是平常我們看到的都是這樣的:

[word for word in ["拍照", "拍張照"]]

這裡面就牽涉到python產生器的概念。

1.3 產生器

產生器的優點在於不需要事先計算,只需要在需要的時候才會調用,不浪費儲存空間和計算時間。簡單的說產生器是一種特殊的集合,這種集合并不像普通的集合一樣事先全部算出,而是在需要的時候才去計算。其實實現方式很簡單,將[]換成()即可,於是就有了上面的語句。關於產生器的其他動作和產生方式可以在網上查閱相關資料,這裡不再贅述。

1.4 繼續for in

接著上面的for in繼續介紹,(word for word in ["拍照", "拍張照"])結果與未經處理資料相同,那麼如果我們想要產生一點變化就要對第一個word執行一個函數,於是就有了word in text,這裡的in就是個函數,判斷word是否是在text中,即word是否是text的子串,相當於其他語言的contain。

這樣就很清楚了,(word in text for word in ["拍照", "拍張照"])表示迴圈原創組合,判斷每個元素是否是給定的text字串的子串,返回的是個True、False集合。

當然我們也可以在迴圈的時候實現過濾,看如下語句:

(word for word in ["拍照", "拍張照"] if word in text)

貌似這條語句跟上面的差別就在於word in text的位置發生了變化,並多了個if。其實二者差別非常大,這裡實現的功能是判斷word是否是text的子串,如果是則取出,相當於過濾掉不是子串的對象,最終返回的是一個字串集合。

1.5 總體

那麼這裡我們再來看一下最開始的語句:

text = '拍照'any(word in text for word in ["拍照", "拍張照"])

綜合以上語句就可以知道此語句實現的是迴圈集合判斷每一個字串是否是給定的text的子串,最終如果不全為空白的話就返回True,即text只要包含集合中的任意一個字串,則返回True。可以用於命令檢測等等場合。

二、總結

本文通過一個稍微複雜的語句,為大家介紹了python中幾個常用的函數和概念,並分析了由繁而簡的過程。

python通過一個語句分析幾個常用函數和概念

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.