1. 程式人生 > >python資料結構--列表、元組

python資料結構--列表、元組

分類:

  1、數值型:int、float、complex、bool

  2、序列物件:str、list、tuple

  3、鍵值對:set、dict

一、數值型

int(x)返回一個整數

float(x)返回一個整數,雙精度型

complex(x)、complex(x,y)返回一個複數

bool(x)返回布林值,可以和整數直接運算,(True+1)=>2

數字的處理:round(),四捨六入五取偶

math模組:floor()向小數取整、ceil()向大數取整、pow(x,y)=x的y次方、sqrt()開方

進位制轉換:bin(10)十進位制轉換成二進位制0b1010

oct(10)十進位制轉換成八進位制0o12,

hex(10)十進位制轉換成十六進位制0xa,

int(‘number’,x)將x進位制的number轉換成十進位制

二、列表

列表為線性資料結構,有序,元素可以是數字、字串、物件、列表等,列表是可變的,可以通過索引進行訪問

1、列表查詢

list.index(value,[start[,stop]])返回value值的索引位置,匹配不到丟擲ValueError

list.count(value)返回列表中匹配value值的次數

count和index時間複雜度都是O(n)

len(list)返回列表中元素的個數

list[index]=value列表元素修改,索引不可超界

list.append()尾部追加,就地修改,沒有新列表產生

listinsert(index,object)在指定的index處插入新的元素object,就地修改,時間複雜度O(n),index超越上界,尾部追加,超越下界,頭部追加

list.extend(interable) 將可迭代元素追加進來,就地修改

+  >將兩個列表連線起來,產生新列表,原列表不變,本質上呼叫的是__add__()方法

* >將列表元素重複n次,返回新的列表list=[[1,2],3]*2=>[[1,2],3[1,2],3] list[0][0]=5 =>[[5,2],3,[5,2],3]

 

list.remove(value),移除第一個value的值,就地修改

list.pop([index])不指定索引從尾部彈出,指定索引,彈出索引出的值

list.clear(),清空所有元素,剩下一個空列表

list.reverse(),列表元素反轉,返回None,就地修改

list.sort(key=func,reverse=False)對元素進行排序,reverse為True=降序,False=升序,key為一個函式,指定key如何排序

 

拷貝:list1=list2相當於賦值,兩個列表完全相等,對任何一個改變都會影響另一個,其實操作的是同一個,只是有兩個變數名,list1 is list2 =>True

淺拷貝 import copy。 list1=list.copy(),或者list1=copy.copy(list2)這兩個一樣,兩個列表的id地址不同,值相同,改變其中任一個列表的第一層都不會影響到第二個列表,改變從第二層開始就會影響另一個列表,也就是說從第二層開始指向的是同一個id地址,list1 is list2 =>False

對於列表,list1=list[:],就是淺拷貝

深拷貝 import copy 。list1=list2.copy.deepcopy(),深拷貝之後,兩個列表只是值相同,對一個列表的任何改變都不會影響另一個列表

以上適用於可變型別,對於不可變型別的物件元組,對於深淺拷貝毫無影響,最終的地址值和值都是相等的。

random模組

import random

random.randint(a,b)返回[a,b]之間的整數

random.choice(seq)從非空序列的元素中隨機挑選一個元素,如random.choice(range(10)),random.choice([1,2,3,5,7])

random.randrange(start,stop=None,step=1)從指定範圍內,按指定基數遞增的集合中獲取一個隨機數,基數預設值為1,

random.shuffle(list) 返回值為None,就地打亂列表元素

random.sample(population,k)從樣本空間或總體(序列或者集合型別)中隨機取出k個不同的元素,返回一個新的列表 如random.sample(['a','b','c'],2)。random.sample([1,1],2)=>[1,1]

三、元組

一個有序的元素組成的集合,使用小括號()表示,元組是不可變物件

一個元素時用(1,),元素後邊要有逗號

元組查詢方法有index、count、len用法與列表相同

元組是隻讀的,所以沒有增,改,刪的方法

 

命名元組:

from collections import namedtuple

namedtuple(typename,field_names,verbose=False,rename=False)

- typename: 元組名稱 
- field_names : 元組中元素的名稱 
- rename: 如果元素名稱中包含python關鍵字, 必須設定rename=True