久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      Python 列表推導(dǎo)式使用注意事項(xiàng)

      Python教程欄目今天翻譯介紹列表推導(dǎo)式使用的注意事項(xiàng)。

      Python 列表推導(dǎo)式使用注意事項(xiàng)

      Python 列表推導(dǎo)式使用注意事項(xiàng)

      Python 列表推導(dǎo)式并不是給初學(xué)者用的,因?yàn)樗浅7粗庇X,甚至對(duì)于有其他編程語言背景的人也是如此。

      我們接觸到 List 的使用時(shí),學(xué)習(xí)的內(nèi)容都是零散的。所以我們?nèi)鄙僖粋€(gè)關(guān)于如何在各種各樣的場(chǎng)景下使用 List 的知識(shí)體系。

      本文提供了一些 List 的使用指南,盡可能涵蓋各個(gè)方面。希望本文可以成為你的一站式實(shí)用手冊(cè)。

      使用建議

      1.建議使用迭代的方式

      使用 List 最基本的方式是以一個(gè)可迭代對(duì)象為基礎(chǔ),創(chuàng)建一個(gè) List 對(duì)象,這個(gè)可迭代對(duì)象可以是任意可以迭代元素的Python對(duì)象。使用方法如下。

      [expression for item in iterable]復(fù)制代碼

      下面這段代碼展示了一個(gè)使用列表相關(guān)技術(shù)創(chuàng)建 List 對(duì)象的例子。在這個(gè)例子中,我們定義了一個(gè) Integer 列表,并基于這個(gè)對(duì)象創(chuàng)建了保存每個(gè)數(shù)字的平方數(shù)和立方數(shù)的 List 對(duì)象。

      >>> # 創(chuàng)建一個(gè) Integer 列表>>> integers = [1, 2, 3, 4, 5, 6]>>> # 創(chuàng)建平方數(shù)和立方數(shù)列表>>> powers = [(x*x, pow(x, 3)) for x in integers]>>> print(powers) [(1, 1), (4, 8), (9, 27), (16, 64), (25, 125), (36, 216)]復(fù)制代碼

      上面的例子把 List 對(duì)象當(dāng)作迭代器使用。我們應(yīng)該知道,許多類型的對(duì)象也是可迭代的,比如 List、Set、Dictionary 和 String 等等。其他數(shù)據(jù)類型,像 range、map、filter,以及 pandas 包中的 Series、DataFrame,都是可迭代的。下面的代碼演示了某些對(duì)象的使用方法。

      >>> # 使用 range 對(duì)象>>> integer_range = range(5)>>> [x*x for x in integer_range] [0, 1, 4, 9, 16]>>> # 使用 Series 對(duì)象 >>> import pandas as pd>>> pd_series = pd.Series(range(5))>>> print(pd_series)0    01    12    23    34    4dtype: int64>>> [x*x for x in pd_series] [0, 1, 4, 9, 16]復(fù)制代碼

      2.如果只需用到其中的某些元素,應(yīng)當(dāng)使用條件判斷語句

      假設(shè)你需要將符合某種條件的元素歸集起來,并創(chuàng)建一個(gè) list。下面展示了相關(guān)的語法。

      [expression for item in iterable if condition]復(fù)制代碼

      if 語句用來實(shí)現(xiàn)條件判斷。下面的代碼展示了這種用法的一個(gè)簡單示例。

      >>> # 同樣創(chuàng)建一個(gè) Integer 列表>>> integers = [1, 2, 3, 4, 5, 6]>>> # 篩選出偶數(shù),創(chuàng)建一個(gè)這些偶數(shù)的平方數(shù)列表>>> squares_of_evens = [x*x for x in integers if x % 2 == 0]>>> print((squares_of_evens)) [4, 16, 36]復(fù)制代碼

      3.使用條件判斷語句

      List 對(duì)象中還可以使用 if-else 形式的條件判斷,語法如下。

      [expression0 if condition else expression1 for item in iterable]復(fù)制代碼

      這跟前面的那種用法有些類似,別把這兩種用法混淆。在本例中,條件語句本身是一個(gè)整體。下面的代碼提供了一個(gè)例子。

      >>> # 創(chuàng)建一個(gè) Integer 列表>>> integers = [1, 2, 3, 4, 5, 6]>>> # 遍歷 integers 中的元素,如果是偶數(shù),取平方數(shù)存入新的列表>>> # 如果是奇數(shù),取立方數(shù)存入新的列表>>> custom_powers = [x*x if x % 2 == 0 else pow(x, 3) for x in integers]>>> print(custom_powers) [1, 4, 27, 16, 125, 36]復(fù)制代碼

      4.如果有嵌套結(jié)構(gòu),可以使用嵌套的循環(huán)

      有可能可迭代對(duì)象中的元素自身也是可迭代的,盡管這種情況不太常見。如果你對(duì)嵌套的可迭代對(duì)象有興趣,可以使用 for 來實(shí)現(xiàn)循環(huán)嵌套。語法如下。

      [expression for item_outer in iterable for item_inner in item_outer]  # 與下面的代碼等同 for item_outer in iterable:     for item_inner in item_outer:         expression復(fù)制代碼

      上面的代碼展示了使用for實(shí)現(xiàn)嵌套循環(huán)的例子。

      >>> # 創(chuàng)建一個(gè)包含元組的列表>>> prices = [('$5.99', '$4.99'), ('$3.5', '$4.5')]>>> # 獲取元組中的每個(gè)價(jià)格,以此創(chuàng)建一個(gè)一維列表>>> prices_formatted = [float(x[1:]) for price_group in prices for x in price_group]>>> print(prices_formatted) [5.99, 4.99, 3.5, 4.5]復(fù)制代碼

      5.替換高階函數(shù)

      有的人比較習(xí)慣函數(shù)式編程,比如使用高階函數(shù)也是這種習(xí)慣的表現(xiàn)之一。特別說明一下,高階函數(shù)是那些需要使用輸入或輸出參數(shù)的函數(shù)。在 Python 中,常用的高階函數(shù)有 map()filter()。

      >>> # 創(chuàng)建一個(gè) integer 類型的列表>>> integers = [1, 2, 3, 4, 5]>>> # 使用 map 創(chuàng)建平方數(shù)列表>>> squares_mapped = list(map(lambda x: x*x, integers))>>> squares_mapped [1, 4, 9, 16, 25]>>> # 使用列表推導(dǎo)式創(chuàng)建平方數(shù)列表>>> squares_listcomp = [x*x for x in integers]>>> squares_listcomp [1, 4, 9, 16, 25]>>> # 使用 filter 取得 integers 中的偶數(shù)列表>>> filtered_filter = list(filter(lambda x: x % 2 == 0, integers))>>> filtered_filter [2, 4]>>> # 使用列表推導(dǎo)式取得 integers 中的偶數(shù)列表>>> filterd_listcomp = [x for x in integers if x % 2 == 0]>>> filterd_listcomp [2, 4]復(fù)制代碼

      從上面的例子可以看出,使用 list 的某些特性比使用高階函數(shù)更具有可讀性,而且也能實(shí)現(xiàn)較復(fù)雜的嵌套結(jié)構(gòu)。

      使用禁忌

      1.不要忘了定義構(gòu)造函數(shù)

      有人認(rèn)為列表推導(dǎo)式很酷炫,是 Python 特有的功能,所以為了炫耀自己的 Python 水平,即使有更好替代方案也要使用它。

      >>> # 使用 range 創(chuàng)建列表對(duì)象>>> numbers = [x for x in range(5)]>>> print(numbers) [0, 1, 2, 3, 4]>>> # 以一個(gè)字符串為基礎(chǔ),創(chuàng)建一個(gè)小寫字母的字符列表>>> letters = [x.lower() for x in 'Smith']>>> print(letters) ['s', 'm', 'i', 't', 'h']復(fù)制代碼

      上述例子中,我們使用了 range 和 string,這兩種數(shù)據(jù)結(jié)構(gòu)都是可迭代的,list()構(gòu)造函數(shù)可以直接使用 iterable 創(chuàng)建一個(gè) list 對(duì)象。下面的代碼提供了更合理的解決方案。

      >>> # 使用 range 創(chuàng)建列表對(duì)象>>> numbers = list(range(5))>>> print(numbers) [0, 1, 2, 3, 4]>>> # 以一個(gè)字符串為基礎(chǔ),創(chuàng)建一個(gè)小寫字母的字符列表>>> letters = list('Smith'.lower())>>> print(letters) ['s', 'm', 'i', 't', 'h']復(fù)制代碼

      2.不要忘了生成器表達(dá)式

      在 Python 中,生成器是一種特殊的可迭代對(duì)象,它會(huì)延遲加載元素,直到被請(qǐng)求才會(huì)加載。這在處理大量數(shù)據(jù)時(shí)會(huì)非常高效,它能提升存儲(chǔ)效率。相比之下,list 對(duì)象為了方便計(jì)數(shù)和索引,一次性創(chuàng)建所有的元素。所以跟生成器相比,在元素個(gè)數(shù)相同時(shí),list 需要占用

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)