国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python序列操作之進階篇

2020-02-23 04:10:34
字體:
來源:轉載
供稿:網友

簡介

Python 的序列(sequence)通常指一個可迭代的容器,容器中可以存放任意類型的元素。列表和元組這兩種數據類型是最常被用到的序列,python內建序列有六種,除了剛剛有說過的兩種類型之外,還有字符串、Unicode字符串、buffer對像和最后一種xrange對像,這幾種都是不常使用的。本文講解了列表推導式、切片命名、列表元素排序、列表元素分組的使用方法。學習了 Python 基本的列表操作后,學習這些進階的操作,讓我們寫出的代碼更加優雅簡潔和 pythonic 。

列表推導式

當我們想要根據某些規則來構造一個列表時,首先想到的應該是列表推導式。列表推導式簡化了循環操作,例如我們想要從一個原始文件名列表中獲取全部 .py 文件,在沒有列表推導式的情況下,我們通常會這樣做:

file_list = ['foo.py', 'bar.txt', 'spam.py', 'animal.png', 'test.py']py_list = []for file in file_list:if file.endswith('.py'):py_list.append(file)print(py_list)# output['foo.py', 'spam.py', 'test.py']

而如果使用列表推導式則可簡化為:

py_list = [f for f in file_list if f.endswith('.py')]print(py_list)# output['foo.py', 'spam.py', 'test.py']

列表推導式的介紹網上資源很多,不再贅述。這里只強調,當你需要根據某個規則來構造一個列表時,首先應該想一想,能否使用簡潔的列表推導式來實現該需求,否則再回到常規的方式。

為切片命名

Python 的列表切片使用起來非常方便,但有時也會影響代碼可讀性。例如有一個字符串:

record = '..........19.6..........100..........'

19.6 為產品價格,100 為產品數量,那么計算總價格為:

但是如果這樣寫,可能過一段時間我們再來讀代碼時已經忘記了 record[10:14] record[24:27] 切出來的究竟是什么?為了解決上述問題,可以給切片命個名來增強可讀性。

record = '..........19.6..........100..........'price = slice(10, 14)count = slice(24, 27)total_price = float(record[price])*int(record[count])

slice 接收的參數格式為 slice(stop)slice(start, stop[, step]) 。如果只接收了一個參數,則等價于切片語法 [:stop] ,如果接收兩個參數,則等價于切片語法 [start:stop] ,如果接收三個參數,則等價于切片語法 [start:stop:step]

排序

排序相關的任務通常由內置函數 sorted 完成。需要排序的元素一般存放在一個列表容器中,列表可以存放任意類型的元素,而 sorted 函數的 key 關鍵字使得我們能夠輕松地指定元素排序的關鍵字,讓排序變得異常簡單。下面將給出幾個常見的排序例子以說明 key 關鍵字的使用方法。注意 Python3 和 Python2 的排序方法不能通用,下面的例子只適用于 Python3 ,Python2 的排序方法未包含在本文中。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 修文县| 安化县| 新晃| 富蕴县| 夹江县| 乌兰县| 西乌珠穆沁旗| 罗平县| 花莲市| 天全县| 桂林市| 和田市| 北流市| 娄烦县| 乐都县| 登封市| 涡阳县| 邯郸县| 根河市| 军事| 永修县| 麦盖提县| 湟中县| 邢台县| 辉南县| 墨竹工卡县| 衡山县| 巴林左旗| 黔江区| 新丰县| 潢川县| 铜山县| 岫岩| 昂仁县| 平昌县| 保靖县| 县级市| 固原市| 雷山县| 新晃| 德昌县|