最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在Python中使用列表生成式的教程

 更新時(shí)間:2015年04月27日 10:43:58   作者:廖雪峰  
這篇文章主要介紹了在Python中使用列表生成式的教程,列表生成式是Python具有的重要特性,需要的朋友可以參考下

列表生成式即List Comprehensions,是Python內(nèi)置的非常簡(jiǎn)單卻強(qiáng)大的可以用來創(chuàng)建list的生成式。

舉個(gè)例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用range(1, 11):

>>> range(1, 11)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

但如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么做?方法一是循環(huán):

>>> L = []
>>> for x in range(1, 11):
...  L.append(x * x)
...
>>> L
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

但是循環(huán)太繁瑣,而列表生成式則可以用一行語句代替循環(huán)生成上面的list:

>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

寫列表生成式時(shí),把要生成的元素x * x放到前面,后面跟for循環(huán),就可以把list創(chuàng)建出來,十分有用,多寫幾次,很快就可以熟悉這種語法。

for循環(huán)后面還可以加上if判斷,這樣我們就可以篩選出僅偶數(shù)的平方:

>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]

還可以使用兩層循環(huán),可以生成全排列:

>>> [m + n for m in 'ABC' for n in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

三層和三層以上的循環(huán)就很少用到了。

運(yùn)用列表生成式,可以寫出非常簡(jiǎn)潔的代碼。例如,列出當(dāng)前目錄下的所有文件和目錄名,可以通過一行代碼實(shí)現(xiàn):

>>> import os # 導(dǎo)入os模塊,模塊的概念后面講到
>>> [d for d in os.listdir('.')] # os.listdir可以列出文件和目錄
['.emacs.d', '.ssh', '.Trash', 'Adlm', 'Applications', 'Desktop', 'Documents', 'Downloads', 'Library', 'Movies', 'Music', 'Pictures', 'Public', 'VirtualBox VMs', 'Workspace', 'XCode']

for循環(huán)其實(shí)可以同時(shí)使用兩個(gè)甚至多個(gè)變量,比如dict的iteritems()可以同時(shí)迭代key和value:

>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
>>> for k, v in d.iteritems():
...   print k, '=', v
... 
y = B
x = A
z = C

因此,列表生成式也可以使用兩個(gè)變量來生成list:

>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
>>> [k + '=' + v for k, v in d.iteritems()]
['y=B', 'x=A', 'z=C']

最后把一個(gè)list中所有的字符串變成小寫:

>>> L = ['Hello', 'World', 'IBM', 'Apple']
>>> [s.lower() for s in L]
['hello', 'world', 'ibm', 'apple']

小結(jié)

運(yùn)用列表生成式,可以快速生成list,可以通過一個(gè)list推導(dǎo)出另一個(gè)list,而代碼卻十分簡(jiǎn)潔。

思考:如果list中既包含字符串,又包含整數(shù),由于非字符串類型沒有l(wèi)ower()方法,所以列表生成式會(huì)報(bào)錯(cuò):

>>> L = ['Hello', 'World', 18, 'Apple', None]
>>> [s.lower() for s in L]
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no attribute 'lower'

使用內(nèi)建的isinstance函數(shù)可以判斷一個(gè)變量是不是字符串:

>>> x = 'abc'
>>> y = 123
>>> isinstance(x, str)
True
>>> isinstance(y, str)
False

請(qǐng)修改列表生成式,通過添加if語句保證列表生成式能正確地執(zhí)行。

相關(guān)文章

  • xshell會(huì)話批量遷移到mobaxterm的工具(python小工具)

    xshell會(huì)話批量遷移到mobaxterm的工具(python小工具)

    這篇文章主要介紹了xshell會(huì)話批量遷移到mobaxterm的工具,使用方法也超級(jí)簡(jiǎn)單,本文通過python代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • 基于Python制作ASCII碼轉(zhuǎn)換器

    基于Python制作ASCII碼轉(zhuǎn)換器

    ASCII碼是基于拉丁字母的一套電腦編碼系統(tǒng),主要用于顯示現(xiàn)代英語和其他西歐語言。本文將利用Python制作一個(gè)ASCII碼轉(zhuǎn)換器,感興趣的可以動(dòng)手試一試
    2022-02-02
  • Tensorflow不支持AVX2指令集的解決方法

    Tensorflow不支持AVX2指令集的解決方法

    今天小編就為大家分享一篇Tensorflow不支持AVX2指令集的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Pycharm如何返回上一次編輯處的快捷鍵

    Pycharm如何返回上一次編輯處的快捷鍵

    這篇文章主要介紹了Pycharm如何返回上一次編輯處的快捷鍵問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • python與字符編碼問題

    python與字符編碼問題

    這篇文章主要介紹了python與字符編碼問題,下面對(duì)編碼問題做個(gè)簡(jiǎn)單的總結(jié),感興趣的朋友跟隨小編一起看看吧
    2019-05-05
  • Python的pandas類庫結(jié)構(gòu)參數(shù)

    Python的pandas類庫結(jié)構(gòu)參數(shù)

    pandas是基于NumPy 的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的,Pandas 納入了大量庫和一些標(biāo)準(zhǔn)的數(shù)據(jù)模型,提供了高效地操作大型數(shù)據(jù)集所需的工具,需要的朋友可以參考下
    2023-07-07
  • 詳解在Python的Django框架中創(chuàng)建模板庫的方法

    詳解在Python的Django框架中創(chuàng)建模板庫的方法

    這篇文章主要介紹了在Python的Django框架中創(chuàng)建模板庫的方法,模版庫通常用來管理單獨(dú)的Django中的應(yīng)用,需要的朋友可以參考下
    2015-07-07
  • python?pandas分割DataFrame中的字符串及元組的方法實(shí)現(xiàn)

    python?pandas分割DataFrame中的字符串及元組的方法實(shí)現(xiàn)

    本文主要介紹了python?pandas分割DataFrame中的字符串及元組的方法實(shí)現(xiàn),主要介紹了3種方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2022-03-03
  • python關(guān)閉windows進(jìn)程的方法

    python關(guān)閉windows進(jìn)程的方法

    這篇文章主要介紹了python關(guān)閉windows進(jìn)程的方法,涉及Python調(diào)用系統(tǒng)命令操作windows進(jìn)程的技巧,需要的朋友可以參考下
    2015-04-04
  • Python基于鏈接表實(shí)現(xiàn)無向圖最短路徑搜索

    Python基于鏈接表實(shí)現(xiàn)無向圖最短路徑搜索

    鏈接表的存儲(chǔ)相比較鄰接炬陣,使用起來更方便,對(duì)于空間的使用是剛好夠用原則,不會(huì)產(chǎn)生太多空間浪費(fèi)。所以本文將以鏈接表方式實(shí)現(xiàn)無向圖最短路徑搜索,需要的可以參考一下
    2022-04-04

最新評(píng)論

息烽县| 临颍县| 鹤岗市| 西昌市| 宣武区| 福贡县| 依安县| 裕民县| 海丰县| 丰城市| 广平县| 资源县| 临江市| 南宁市| 肥乡县| 遂平县| 乌什县| 西和县| 陇南市| 延寿县| 色达县| 吕梁市| 新密市| 德安县| 张家口市| 嘉义县| 修水县| 巩义市| 襄城县| 开封县| 平度市| 阳西县| 莒南县| 池州市| 克东县| 太谷县| 唐山市| 班玛县| 榕江县| 南华县| 夹江县|