日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python序列

發(fā)布時(shí)間:2023/12/20 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python序列 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

python序列

列表

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

1.常用方法

1.1 增加元素

  • append,在末尾插入元素

  • extend,將一個(gè)列表整體插入到尾部

  • insert,將某個(gè)元素插入到特定位

  • +/*,拼合或拼合多個(gè)元素,該操作不是原地操作,會(huì)創(chuàng)建新地址

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

1.2 刪除元素

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

1.3 排序

  • sort:按指定規(guī)則對元素排序,默認(rèn)規(guī)則是比較元素大小

  • reverse:按制定規(guī)則逆序排序

  • sorted:sort異地排序

  • reversed:reverse異地排序

  • 前兩個(gè)在原來基礎(chǔ)上排,后兩個(gè)返回新對象

1.4 查找

  • count
  • index:返回元素在列表中首次出現(xiàn)的位置

1.5其他

  • zip:將多個(gè)列表中的元素重新組合為元組,并返回包含這些元組的zip對象
  • enumerate:返回包含下標(biāo)和值的迭代對象,可用來判斷一個(gè)對象是否是迭代對象
  • map():將一個(gè)函數(shù)依次作用到序列或迭代器對象的每個(gè)元素上,并返回map對象
  • reduce():接受兩個(gè)函數(shù)的參數(shù),并從左到右把這兩個(gè)函數(shù)依次作用在迭代對象的每個(gè)元素上,在functools標(biāo)準(zhǔn)庫中
>>> 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兩個(gè)列表的元素個(gè)數(shù)不同時(shí)以短的為準(zhǔn),里面的參數(shù)是可迭代對象

map:

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

也可以是多參數(shù)函數(shù),返回的map對象中的所有元素都是經(jīng)過函數(shù)處理過后的,但map不會(huì)對迭代對象做修改

>>> 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. 列表推導(dǎo)式

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

可以嵌套多重循環(huán),也可以使用判斷

例:

j=[1,3,2] ss=[s*2 for s in j] print(ss)# 輸出:[2, 6, 4]
  • 使用推導(dǎo)式平鋪嵌套列表
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]
  • 寫一個(gè)列表生成式,產(chǎn)生一個(gè)公差為11的等差數(shù)列
def 等差數(shù)列(self,begin,num):l=[begin+11*a for a in range(num) ]print(l)
  • 在一個(gè)字典中找出最大值
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)
  • 矩陣轉(zhuǎn)置
def 矩陣轉(zhuǎn)置(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. 切片

由兩個(gè)冒號(hào),三個(gè)數(shù)字組成,三個(gè)數(shù)字分別是起始,終止,步長,切片可以用在列表,元組,字符串等上

使用切片可以實(shí)現(xiàn)淺復(fù)制,修改值等操作。

元組

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

1.生成器推導(dǎo)式

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

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

>>> 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 :創(chuàng)建字典
  • update: 將一個(gè)字典添加到另一個(gè)字典中
  • pop:刪除,并返回給定鍵對應(yīng)的值
  • popitem:隨機(jī)彈出一個(gè)元素,返回元素
  • del
  • clear
  • copy
  • setdefault:查詢字典中的元素,不存在就添加一個(gè)
  • 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'}

集合

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

1.集合操作

  • add()
  • update()
  • pop():隨即刪除并返回一個(gè)元素,不存在拋出異常
  • remove():刪除一個(gè)特點(diǎn)元素,元素不存在拋出異常
  • discard():刪除一個(gè)特定元素,不存在就忽視該操作
  • 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.集合運(yùn)算

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

3. 集合推導(dǎo)式

{表達(dá)式 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} >>>

集合不允許元素重復(fù),所以可以利用這一特性實(shí)現(xiàn)去重。

序列解包

>>> 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'] 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的python序列的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。