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

猜你喜欢

转载自www.cnblogs.com/s-p-l/p/10192611.html
今日推荐