如何在python中使用列表理解

列表理解是一個有用的Python工具,用於基於現有資料建立列表。下面是如何使用它。...

在Python中及時使用列表理解可以使迭代列表操作變得容易。除了一行之外,它的可讀性更高,執行效率也更高。

Text editor with Python code written on it

然而,如果你不知道如何使用它,你可能會生氣。如果您不知道在代碼中的什麼地方應用它,那就更令人沮喪了。在這裡,我們將通過一些實際例子向您展示如何在Python中使用列表理解。

什麼是列出python中的理解以及它是如何工作的(list comprehension in python and how does it work)?

用Python創建項目列表很容易。但是,當您需要從數學或字符串操作生成值或項的列表時,該任務可能會變得有點乏味。這時使用列表理解就派上用場了。

使用列表理解的一個優點是,您可以在一個列表中執行多個操作。

相反,它創建新項並將它們附加到它自動聲明的空列表中。因此,Python的list comprehension不需要手動創建一個空列表並用for循環附加到它,而是讓您自動完成這項工作,而不用擔心新列表是如何產生的。

術語“列表理解”來自這樣一個事實:所有操作都在一個Python列表中,該列表被分配給一個命名變量。如前所述,它允許您在一行代碼中執行特定操作。然後將輸出附加到一個新列表。

最後,您還可以將列表理解的輸出用於其他目的。這是因為它將表達式堆疊在不同的變量中。所以你以後可以參考。

例如,你可能正在用BeautifulSoup刮一個網站。假設您打算從網站上獲取所有商品的名稱及其價格。

然後,您決定將刮取的數據放入CSV或Excel文件中。理想的做法是將所有商品的名稱及其價格颳去,並將它們放在單獨的列中。但是,在這種情況下,使用列表理解可以確保您在專用變量中獲得了刮取的數據。然後,您可以稍後將這些變量轉換為Python數據幀。

請看下面的示例:

Products = [i.text for i in bs.find_all('name tags')]Price = [i.text for i in bs.find_all('price tags')]

一旦獲得循環變量,然後可以使用Python的熊貓將它們放在數據框架中的單獨列中。

如何在python中創建和使用列表理解

for循環是列表理解中必不可少的迭代器。通常,Python中的列表理解採用以下格式:

ComprehensionVariable = [expression for items in list]

Printing ComprehensionVariable將上述代碼的結果作為列表輸出。

但是,請注意不要將列表理解與開放for循環混淆。

例如,讓我們使用一個open For循環來獲取1到30之間的所有3的倍數的列表:

myList = []for i in range(1, 11):myList.append(i * 3)print(myList)Output: [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

為了比較兩者,讓我們使用列表理解做同樣的事情:

multiplesOf3 = [i*3 for i in range(1, 11)]print(multiplesOf3)Output = [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

您也可以使用條件語句的列表理解。下面的示例代碼打印1到10之間的所有奇數:

oddNumbers = [i for i in range(1, 11) if not i%2==2]print(oddNumbers)Output = [1, 3, 5, 7, 9]

現在,讓我們用一個開for循環重寫上面的代碼:

myList = []for i in range(1, 11):if not i%2 == 0:myList.append(i)print(myList)Output: [1, 3, 5, 7, 9]

相關:如何在Python中附加列表

列表理解還接受嵌套if語句:

oddNumbers = [i for i in range(1, 11) if not i%2==0 if i<4]print(oddNumbers)Output: [1, 3]

它還接受嵌套for循環:

someNums = [[i*2 for i in range(1, 3)] for _ in range(4)]print(someNums)

也可以在列表中有一個普通的嵌套for循環:

someNums = [i*2 for i in range(1, 3) for k in range(4)]

您還可以使用Python列表理解操作字符串。讓我們看一看下面的單詞反理解:

word = ["This is a python list comprehension tutorial"]wordCounter = [i.count(' ') + 1 for i in word]print(wordCounter)Output: 7

列表理解也可以接受執行特定操作的函數。讓我們**一個乘法器函數,在列表中獲得偶數,以瞭解其工作原理:

Numbers = [4, 7, 8, 15, 17, 10]def multiplier(n):multiple = n*2return multiplemultipleEven = [multiplier(i) for i in Numbers if i%2==0]print(multipleEven)Output: [8, 16, 20]

您仍然可以在一個函數中編寫上面的代碼,而不需要使用理解。但是當您需要執行幾個迭代並將它們放入單獨的變量中時,列表理解非常有用。

例如,可以對n執行另一個操作,併為其指定一個專用變量。讓我們修改上面的理解,從奇數中生成偶數:

multipleEvenFromOdds = [multiplier(i) for i in Numbers if not i%2==0]print(multipleEvenFromOdds)Output: [14, 30, 34]

詞典和集合理解

除了列表理解之外,Python還提供了字典和集合理解功能。

請看下面的詞典理解示例,瞭解其工作原理:

corresponding = {i: i*2 for i in range(10) if not i%2==0}print(corr)Output: {1: 2, 3: 6, 5: 10, 7: 14, 9: 18}

上面的代碼遍歷1到9之間的數字列表,並使它們成為鍵。然後它告訴Python將每個鍵乘以2。最後,它將該操作的結果顯示為結果數組中每個鍵的對應值。

相關:數組和列表在Python中的工作方式

集合理解有點類似於列表理解。下面是一個集合理解的例子:

numbers = {i**(2) for i in range(10) if i%4==0}print(numbers)Output: {0, 16, 64}

但是,與列表理解不同,set congress刪除重複項:

nums = {i for i in range(20) if i%2==1 for k in range(10) if k%2==1}print(nums)Output: {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}

您可以使用列表理解來嘗試上面的代碼,看看它們有什麼不同。

你每次都能用列表理解嗎?

我們已經看了列表理解的不同例子,以及在哪裡可以使用它們。然而,與任何其他Python方法一樣,列表理解的用例取決於您希望解決的特定問題。因此,你應該只使用它,如果它是理想的具體問題,你希望解決。

列表理解的目的之一是簡化代碼並使其更具可讀性。所以,在處理它的時候一定要避免複雜性。例如,對Python的理解可能會變得複雜。這違背了它的目的。

  • 發表於 2021-03-11 10:55
  • 閱讀 ( 55 )
  • 分類:程式設計

你可能感興趣的文章

追加(append)和在python中擴充套件(extend in python)的區別

關鍵區別–python中的append與extend Python是一種流行的通用程式語言。它是一種高階語言,所以語法很容易被程式設計師理解和閱讀。Python中最基本的資料結構是序列。它是一組元素。起始元素的索引為0,下一個元素的索引為1...

  • 發佈於 2020-10-19 10:35
  • 閲讀 ( 58 )

perl公司(perl)和python(python)的區別

關鍵區別–perl與python 計算機程式為計算機執行任務提供指令。一組指令被稱為計算機程式。計算機程式是用程式語言開發的。高階語言程式設計師可以理解,但計算機卻不能理解。因此,這些程式被轉換成機器可理解的格式...

  • 發佈於 2020-10-19 17:38
  • 閲讀 ( 41 )

紅寶石(ruby)和python(python)的區別

關鍵區別——ruby與python Ruby和Python是高階程式語言,因為它們遵循與英語語言相似的語法。因此,程式設計師很容易理解這些語言。Ruby和Python都是解釋語言。兩種語言都有大量的社群支援。Ruby和Python的一個主要優點是這些語...

  • 發佈於 2020-10-19 17:41
  • 閲讀 ( 57 )

列表(list)和元組(tuple)的區別

列表(list)和元組(tuple)的區別 Python是一種通用的高階程式語言。它很容易閱讀和學習。因此,它是初學者開始計算機程式設計的通用語言。Python程式易於測試和除錯。它是一種用來構建各種應用程式的語言。其中一些是機器學...

  • 發佈於 2020-10-24 03:25
  • 閲讀 ( 45 )

如何在任何使用python的計算機上安裝selenium webdriver

...lenium WebDriver。在本文中,我們將簡要介紹Selenium,並提供如何在系統上安裝Selenium WebDriver的詳細指南。 ...

  • 發佈於 2021-03-10 21:27
  • 閲讀 ( 62 )

一個尺寸不適合所有人:為什麼軟體不能普遍相容

...作業系統工作需要一點(只是一點,我保證)關於軟體是如何**的知識。 ...

  • 發佈於 2021-03-13 08:34
  • 閲讀 ( 52 )

json-python解析:簡單指南

... 下面是如何表示物件陣列。在這種表示法中,陣列的每一項都是一個物件。以下是棒球運動員的工資樣本。 ...

  • 發佈於 2021-03-13 11:20
  • 閲讀 ( 48 )

python字典:如何使用它編寫更好的程式碼

... 在本文中,我們將向您介紹如何使用python字典。 ...

  • 發佈於 2021-03-14 05:15
  • 閲讀 ( 39 )

陣列和列表在python中的工作方式

...資料型別告訴編譯器(或者在Python的情況下告訴直譯器)如何使用資料。資料結構指定可以執行的操作,並且通常實現特定的規則和規定。 ...

  • 發佈於 2021-03-15 17:19
  • 閲讀 ( 52 )

如何讓python和javascript使用json進行通訊

有沒有想過如何在兩種程式語言之間傳送資料?是否嘗試傳送一個物件或多個數據段? ...

  • 發佈於 2021-03-16 01:22
  • 閲讀 ( 71 )