python序列

python序列

列表

python變量不存放值,之存放值的引用,所以列表中元素可以是不同類型

1.常用方法

1.1 增加元素

  • append,在末尾插入元素

  • extend,將一個列表整體插入到尾部

  • insert,將某個元素插入到特定位

  • +/*,拼合或拼合多個元素,該操作不是原地操作,會創建新地址

  • 上三個都是原地操作,在源地址上增刪查改,最后兩個會新開辟一個地址

1.2 刪除元素

  • del,刪除對象,用在所有對象上,刪除的元素會在合適時間被回收,可以gc.collect()立即回收
  • remove,從列表里移除某個值與特定值相等的元素
  • pop,從列表里移除某個特定位置的元素,并返回該元素
  • clear,清空列表中所有元素,但保留列表自身對象

1.3 排序

  • sort:按指定規則對元素排序,默認規則是比較元素大小

  • reverse:按制定規則逆序排序

  • sorted:sort異地排序

  • reversed:reverse異地排序

  • 前兩個在原來基礎上排,后兩個返回新對象

1.4 查找

  • count
  • index:返回元素在列表中首次出現的位置

1.5其他

  • zip:將多個列表中的元素重新組合為元組,并返回包含這些元組的zip對象
  • enumerate:返回包含下標和值的迭代對象,可用來判斷一個對象是否是迭代對象
  • map():將一個函數依次作用到序列或迭代器對象的每個元素上,并返回map對象
  • reduce():接受兩個函數的參數,并從左到右把這兩個函數依次作用在迭代對象的每個元素上,在functools標準庫中
>>> a=[1,2,3,4]
>>> b=[5,6,7]
>>> ab=zip(a,b)
>>> ab
<zip object at 0x0000028A50A61608>
>>> list(ab)
[(1, 5), (2, 6), (3, 7)]
>>> en=enumerate(a)
>>> en
<enumerate object at 0x0000028A50A6BC60>
>>> list(en)
[(0, 1), (1, 2), (2, 3), (3, 4)]
>>>

zip兩個列表的元素個數不同時以短的為準,里面的參數是可迭代對象

map:

>>> def fun(a):return a+5>>> a=map(fun,range(5))
>>> a
<map object at 0x0000019F517923C8>
>>> list(a)
[5, 6, 7, 8, 9]
>>>

也可以是多參數函數,返回的map對象中的所有元素都是經過函數處理過后的,但map不會對迭代對象做修改

>>> z=zip(a,range(10))
>>> z
<zip object at 0x0000028A50A08748>
>>> list(z)
[(1, 0), (2, 1), (3, 2), (4, 3)]
>>> z=zip(a,"1"*11)
>>> list(z)
[(1, '1'), (2, '1'), (3, '1'), (4, '1')]

2. 列表推導式

[表達式 for 變量 in 序列或迭代對象]

可以嵌套多重循環,也可以使用判斷

例:

j=[1,3,2]
ss=[s*2 for s in j]
print(ss)# 輸出:[2, 6, 4]
  • 使用推導式平鋪嵌套列表
a=[[a for a in range(3)]]*3
print(a)
s=[j for i in a for j in i]
print(s)# 輸出
# [[0, 1, 2], [0, 1, 2], [0, 1, 2]]
# [0, 1, 2, 0, 1, 2, 0, 1, 2]
  • 寫一個列表生成式,產生一個公差為11的等差數列
    def 等差數列(self,begin,num):l=[begin+11*a for a in range(num) ]print(l)
  • 在一個字典中找出最大值
    def 成績最好(self):dir={'zhangsan':95,'lisi':59,'wangwu':78,'zhaoliu':87,'xiaohua':100}max_score=max(dir.values())max_name=[max_name for max_name in dir if dir[max_name]==max_score]print(max_name)
  • 矩陣轉置
 def 矩陣轉置(self):l=[[1,2,3],[4,5,6],[7,8,9]]s=[[r[i] for r in l] for i in range(3)]print(s)

3. 切片

由兩個冒號,三個數字組成,三個數字分別是起始,終止,步長,切片可以用在列表,元組,字符串等上

使用切片可以實現淺復制,修改值等操作。

元組

元組不能修改,比較安全,訪問速度比列表快(tuple)

1.生成器推導式

(表達式 for 變量 in 迭代器)

生成器推導式形式與列表推導式類似,但生成器推導式返回一個生成器對象,生成器對象用完即銷毀,生成器對象需要轉換成列表或元組等數據類型才能使用,也可以通過生成器對象的__next__屬性訪問,生成器對象具有惰性求值的特點,只在需要的時候才返回元素,因此比列表推導式效率高,適合大量數據的遍歷。

>>> s=(a for a in range(5))
>>> s
<generator object <genexpr> at 0x00000135FDE62C00>
>>> list(s)
[0, 1, 2, 3, 4]
>>> list(s)
[]
>>> s=(a for a in range(5))
>>> tuple(s)
(0, 1, 2, 3, 4)
>>>

字典

字典是一種無序可變序列,鍵是不可變類型,值是可變類型,字典訪問速度也比列表快

1.常用方法

  • dict :創建字典
  • update: 將一個字典添加到另一個字典中
  • pop:刪除,并返回給定鍵對應的值
  • popitem:隨機彈出一個元素,返回元素
  • del
  • clear
  • copy
  • setdefault:查詢字典中的元素,不存在就添加一個
  • get:查詢,不存在允許輸出特定值
  • items:返回字典中的元素
  • key:返回鍵的列表
  • value:返回值的列表
>>> key=['name','id']
>>> value=['zhangsan',11]
>>> s=dict(zip(key,value))
>>> s
{'name': 'zhangsan', 'id': 11}
>>> s2={'sex':'boy'}
>>> s.update(s2)
>>> s
{'name': 'zhangsan', 'id': 11, 'sex': 'boy'}
>>> s.pop
<built-in method pop of dict object at 0x00000135FDE0F288>
>>> s.pop('name')
'zhangsan'
>>> s
{'id': 11, 'sex': 'boy'}
>>> s.popitem()
('sex', 'boy')
>>> s
{'id': 11}
>>> s.get('name','No This Key')
'No This Key'
>>> s.setdefault('name','No This Key')
'No This Key'
>>> s
{'id': 11, 'name': 'No This Key'}

集合

集合只支持元組等可哈希數據,列表,字典等可變類型不能成為集合中的元素,可以使用函數hash()判斷是否是可哈希數據,字典和集合使用哈希表存儲數據,所以操作速度高于列表等。(set)

1.集合操作

  • add()
  • update()
  • pop():隨即刪除并返回一個元素,不存在拋出異常
  • remove():刪除一個特點元素,元素不存在拋出異常
  • discard():刪除一個特定元素,不存在就忽視該操作
  • clear():刪除幾何中所有元素
>>> s={1,2,3,4,5}
>>> s.pop()
1
>>> s
{2, 3, 4, 5}
>>> s.remove(0)
Traceback (most recent call last):File "<pyshell#53>", line 1, in <module>s.remove(0)
KeyError: 0
>>> s.remove(2)
>>> s
{3, 4, 5}
>>> s.discard(0)
>>> s
{3, 4, 5}
>>>

2.集合運算

  • 交:&
  • 并:|
  • 差:-
  • 對稱差:^
  • 比較:> < <= >= 用來判斷并包關系,不是比較大小

3. 集合推導式

{表達式 for 變量 in 迭代器}

如:

>>> import random
>>> s={random.randint(1,500) for i in range(20)}
>>> s
{1, 387, 268, 411, 293, 167, 48, 53, 441, 187, 191, 195, 324, 465, 473, 474, 481, 362, 114, 123}
>>> len(s)
20
>>> s={random.randint(1,5) for i in range(20)}
>>> s
{1, 2, 3, 4, 5}
>>>

集合不允許元素重復,所以可以利用這一特性實現去重。

序列解包

>>> x,y,z=1,2,3
>>> p=(2,3,4)
>>> (x,y,z)=p
>>> p
(2, 3, 4)
>>> p=map(str,range(3))
>>> p
<map object at 0x000001BB8B842320>
>>> list(p)
['0', '1', '2']

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457695.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457695.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457695.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端資源(11)

移動端API 地址99移動端知識集合 https://github.com/jtyjty99999/mobileTech移動端前端開發知識庫 https://github.com/AlloyTeam/Mars移動前端的一些坑和解決方法&#xff08;外觀表現&#xff09; http://caibaojian.com/mobile-web-bug.html【原】移動web資源整理 http://w…

win10使用Composer-Setup安裝Composer以及使用Composer安裝Yii2最新版

1&#xff1a;下載 ca-bundle.crt和cacert.pem(見導航欄——文件) 將這兩個文件放在php目錄下 2:php.ini中添加上述兩個文件的路徑 curl.cainfoC:/xampp/php/ca-bundle.crtopenssl.cafileC:/xampp/php/ca-bundle.crt 寫到最后一行就可以 3&#xff1a;下載Composer-Setup.exe h…

python離群點檢測方法分幾類_數據分析 第五篇:離群點檢測

離群點(outlier)是指和其他觀測點偏離非常大的數據點&#xff0c;離群點是異常的數據點&#xff0c;但是不一定是錯誤的數據點。確定離群點對于數據分析會帶來不利的影響&#xff0c;比如&#xff0c;增大錯誤方差、影響預測和影響正態性。從散點圖上可以直觀地看到離群點&…

計算機網絡TCP/IP

TCP/IP原理 看《圖解TCP/IP》時做的筆記&#xff0c;記錄一些感覺重要的東西…還沒完&#xff0c;正在學&#xff0c;慢慢寫 1.計算機網絡的發展 2.OSI參考模型 3.傳輸方式分類 4.地址及網絡的構成 5.TCP/IP協議的出現 6.TCP/IP分層模型及通信示例 7.數據鏈路層1 8.數…

hive求差集和交集

2019獨角獸企業重金招聘Python工程師標準>>> 用的要求總數和統計數&#xff1a; 總數的概念是利用安卓ID&#xff0c;就以為這把兩個月前的安卓ID統統的統計一遍&#xff0c;如果沒有出現&#xff0c;恰好在今天出現了&#xff0c;那么當前的這個用戶就是新增的…

python靜態方法可以被繼承嗎_python 類的繼承 實例方法.靜態方法.類方法的代碼解析...

這篇文章主要介紹了python 類的繼承 實例方法.靜態方法.類方法的代碼解析,文中通過示例代碼介紹的非常詳細&#xff0c;對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下dt{}class Denglu:def register(self,name,psd):if name.isalnum() and psd.isalnum():i…

漸變色--瀏覽器兼容性

說明&#xff1a; 1.360兼容模式效果不好 2.可以直接用不同瀏覽器打開這個頁面查看效果 <!DOCTYPE html><html><head lang"en"> <meta charset"UTF-8"> <title></title> <style> body{ …

如何學習前端 轉載

作者&#xff1a;小不了鏈接&#xff1a;https://zhuanlan.zhihu.com/p/23265155來源&#xff1a;知乎著作權歸作者所有。商業轉載請聯系作者獲得授權&#xff0c;非商業轉載請注明出處。 鑒于時不時&#xff0c;有同學私信問我&#xff08;老姚&#xff0c;下同&#xff09;怎…

tcp前4字節消息長度_網絡基礎篇之TCP

?網絡分層什么是 TCP TCP 是面向連接的、可靠的、基于字節流的傳輸層通信協議。- 面向連接&#xff1a;通過三次握手建立一對一的連接&#xff08; UDP 協議 可以一個主機同時向多個主機發送消息&#xff0c;即一對多&#xff09;&#xff1b;- 可靠的&#xff1a;通過序號、校…

使用Servlet實現用戶注冊

1、用戶注冊頁面代碼 <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd&q…

年輕人的第一篇V語言筆記

V語言極限學習 我聽說V語言看文檔半小時就能完全掌握&#xff1f;&#xff1f;&#xff1f;&#xff1f;以我的智商一小時掌握不了我就給各位科普一下廣告法&#xff1f;&#xff1f;&#xff1f; 宇宙慣例hello world // first v code fn main(){printIn("hello world…

android studio運行手機時出錯怎么解決_小程序 android ios h5解決方案

你現在開發android,ios,小程序用什么工具&#xff0c;怎么開發的&#xff1f;還在單個端的開發嗎&#xff1f;今天我們主要討論的是一次開發多端使用的技術&#xff0c;也是這兩年比較流行的開發方向。現在的終端太多了&#xff0c;app兩個端android和ios,小程序有微信&#xf…

Android SDK上手指南:應用程序數據

版權聲明&#xff1a;本文為博主原創文章&#xff0c;轉載請標明出處。 https://blog.csdn.net/chaoyu168/article/details/52996965 在本系列教程當中&#xff0c;我們將學習如何從零開始進行Android SDK開發。我們已經熟悉了Android應用程序的結構與基本組成元素&#xff0c;…

設計微服務架構需要解決的問題

問題&#xff1a; 劃分服務的原則是什么服務之間選擇何種輕量級的通信協議如何做到服務的獨立部署如何確定使用何種編程語言?控制多語言帶來的復雜度如何做到服務的去中心化如何解決大量微服務引入的運維成本轉載于:https://www.cnblogs.com/fight-tao/p/5641286.html

Django Model設計詳解

Django Model 設計 Django Model設計是Django五項基礎核心設計之一&#xff08;Model設計&#xff0c;URL配置&#xff0c;View編寫&#xff0c;Template設計&#xff0c;From使用&#xff09;&#xff0c;也是MVC模式中重要的環節。 如果圖片無法訪問&#xff0c;大家可以移…

python設置全局變量失敗_Python全局變量與global關鍵字常見錯誤解決方案

在Python的變量使用中&#xff0c;經常會遇到這樣的錯誤:local variable a referenced before assignment它的意思是&#xff1a;局部變量“a”在賦值前就被引用了。比如運行下面的代碼就會出現這樣的問題&#xff1a;a 3def Fuc():print (a)a a 1Fuc()? 但是如果把 a a …

Atititi tesseract使用總結

Atititi tesseract使用總結 消除bug&#xff0c;優化&#xff0c;重新發布。當前版本為3.02 項目下載地址為&#xff1a;http://code.google.com/p/tesseract-ocr。 Windows cmd命令行使用Tesseract-OCR引擎識別驗證碼: 1、下載安裝Tesseract-OCR引擎(3.0版本才支持中文識別) t…

Javascipt數組去重的幾種方式

方法一 function unique(arr) {var retArr [];for (var i 0; i < arr.length; i) {(retArr.indexOf(arr[i]) -1) && retArr.push(arr[i]);}return retArr; } 方法二 function unique(arr) {return arr.filter(function(item, index, array) {return array.indexO…

01_JS語法

JS語法 嚴格區分大小寫以;結尾&#xff0c;不寫瀏覽器會自動加&#xff0c;但不準確&#xff0c;且會占用瀏覽器資源自動忽略多個空格和換行 寫在哪 所有JS代碼都必須依托網頁運行 內嵌 寫在html的script標簽中 <script>// JS代碼 </script>事件 寫在某個ht…

pythonwhile循環love_python基礎之while循環及編碼

while 條件&#xff1a;循環體死循環&#xff1a;沒有終止條件(修改方法&#xff1a;1.改變條件2.使用break)break 終止當前循環contiune&#xff1a;跳出本次循環&#xff0c;繼續下次循環break和contione必須在循環體里while 條件&#xff1a;循環體else&#xff1a;結果當wh…