dnastar拼接反向互补序列_一起看流畅的python:序列构成的数组
深入理解 Python 中的不同序列類型,不但能讓我們避免重新發(fā)明輪子, 它們的 API 還能幫助我們把自己定義的 API 設(shè)計(jì)得跟原生的序列一樣, 或者是跟未來可能出現(xiàn)的序列類型保持兼容。
列表推導(dǎo)第一種方法,用for循環(huán)逐個(gè)向列表里添加數(shù)據(jù)。
第二種方法,就是列表推導(dǎo)的方法。通過for循環(huán)快速構(gòu)造列表。
第三種方法是map/filter組合構(gòu)造法。filter用于過濾序列,map對指定序列做映射,對每一個(gè)序列中的元素調(diào)用函數(shù),返回新的列表。
在python2中,使用列表推導(dǎo)可能會造成變量泄露的問題,即列表內(nèi)for循環(huán)的變量值影響到列表外相應(yīng)的變量的數(shù)值。在python3中,列表推導(dǎo)中的for是局部變量,并不會造成變量泄露。
生成器表達(dá)式
生成器表達(dá)式與列表推導(dǎo)的區(qū)別就在于,生成器表達(dá)式使用的是圓括號,動(dòng)態(tài)構(gòu)成列表。列表推導(dǎo)構(gòu)造時(shí),一次性分配空間,可能會造成對內(nèi)存空間的浪費(fèi),用生成器表達(dá)式則是動(dòng)態(tài)擴(kuò)充空間,適應(yīng)需求。
元組拆包
????元組其實(shí)是對數(shù)據(jù)的記錄:元組中的每個(gè)元素都存放了記錄中一個(gè)字段 的數(shù)據(jù),外加這個(gè)字段的位置。正是這個(gè)位置信息給數(shù)據(jù)賦予了意義。?
????如果只把元組理解為不可變的列表,那其他信息——它所含有的元素的 總數(shù)和它們的位置——似乎就變得可有可無。但是如果把元組當(dāng)作一些 字段的集合,那么數(shù)量和位置信息就變得非常重要了。
元組拆包就是記錄分配給屬性的過程。
具名元組
collections.namedtuple 是一個(gè)工廠函數(shù),它可以用來構(gòu)建一個(gè)帶 字段名的元組和一個(gè)有名字的類——這個(gè)帶名字的類對調(diào)試程序有很大 幫助。
調(diào)用namedtuple方法時(shí),傳入兩個(gè)參數(shù),第一個(gè)是元組名字(或可當(dāng)成類的名字),第二個(gè)參數(shù)就是類里面的各個(gè)屬性的名字。
切片
????在切片和區(qū)間操作里不包含區(qū)間范圍的最后一個(gè)元素是 Python 的風(fēng)格, 這個(gè)習(xí)慣符合 Python、C 和其他語言里以 0 作為起始下標(biāo)的傳統(tǒng)。
????可以用 s[a:b:c] 的形式對 s 在 a 和 b 之間以 c 為間隔取值。c 的值還可以為負(fù),負(fù)值意味著反向取值。
????如果把切片放在賦值語句的左邊,或把它作為 del 操作的對象,我們就 可以對序列進(jìn)行嫁接、切除或就地修改操作。
序列的+和*
????通常 + 號兩側(cè)的序列由 相同類型的數(shù)據(jù)所構(gòu)成,在拼接的過程中,兩個(gè)被操作的序列都不會被 修改,Python 會新建一個(gè)包含同樣類型數(shù)據(jù)的序列來作為拼接的結(jié)果。
my_list = [[]] * 3 來初始化一個(gè) 由列表組成的列表,但是你得到的列表里包含的 3 個(gè)元素其實(shí)是 3 個(gè)引用,而且這 3 個(gè)引用指向的都是同一個(gè)列表。
根據(jù)實(shí)際情況可選擇列表推導(dǎo):
喜歡掃碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的dnastar拼接反向互补序列_一起看流畅的python:序列构成的数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文件夹显示psd预览(在文件夹浏览下怎么
- 下一篇: pythonqt库_Python QT组