python学习之二:python数据结构和内存管理

python数据结构和内存管理思维导图:

对于数据结构的学习主要从这几方面入手:

  • 初始化
  • 常用操作(增删该查)
  • 常用内置函数,注意点

有序序列主要分为字符串,列表,和元组

一.有序序列

定义:

str1=‘python’//字符串

l1=['python','java','c',100]  or l1=list(range(100)) //存放的数据类型可以不同

t1=('class','age',10,['en','cn','abc']) //元组中的元素只读,不能修改,标红部分可以修改

常用操作(增删查-以list和tuple为主):

访问:索引和切片方式 //l1[index] or l1[start:end:step],遍历通过for x in l1方式访问元素。还可以通过下面的方式在访问元素时获得序号:

for seq,item in enumerate(l1):

    print(seq,item) //seq 从0开始

增加:str不可变对象,对象内容不能改变,若要改变可以转化成list,再修改,再转为str。其他两类增加元素的方式为:

l1.append('element') //增加到最右侧

l1.insert(index,'element') //在制定的位置上插入元素element

修改:l1[index]='modifiedValue' //通过下标修改

删除:l1.pop() //弹出最右侧的元素

          l1.pop(index) //制定下标弹出元素

          l1.remove('element') //删除指定的元素

          del l1[2]//按位置删除元素

常用内置函数,注意点:

列表推导式:python的一个很有用的功能,格式如下:

[x for x in 列表 if 条件] or

[(x,y) for x in 列表 for y in 列表]

例如,求1~100直接可以被3整除的数有哪些:

result=[x for x in range(1,101) if x%3==0]

print(result)

zip:拼接列表,如:

zip(l1,l2),解包使用zip(*l1)

常用内置函数:

长度:len(l1)

成员判断:in/not in

获取元素下标:l1.index('xxx')

统计元素出现的个数:l1.count('xxx')

列表比较:l1>l2,是按元素逐个比较的

排序:sorted(l1)//不改变列表本身顺序,返回的是一个对象    l1.sort()//改变列表本身顺序

反转:reversed(l1)//不改变列表本身,返回的是一个对象     l1.reverse()//改变列表本身

拼接:l1.extend(l2) or l1+l2

聚合函数:max,min,sum等等

空值判断:any和all--不常用

类型转换:list(),str(),tuple()

若一个列表如下:

l1=['a','b','c']可通过 e1,e2,e3=l1获得里面对应的元素。

二.无序容器

set存放的是不重复的元素。

初始化:s1=set(l1)

增加:add(‘’),

删除:remove(‘’)

集合之间的操作:交集&,并集|,差集-

关于字典的操作:

d1={'name':'zs','age':20}
#成员判断(针对 key)
'name' in d1
'address' in d1
#新增成员
d1['address']='beijing'
#访问:按key访问value:
d1['name']
d1.get('name',-1)
#访问所有key
d1.keys()
#访问所有value
d1.values()
#访问所有元素
d1.items()
#删除成员
d1.pop('address')#返回指定key的值。并弹出元素
d1.popitem()#r返回整个元素。并弹出
#清空

d1.clear()

三.可变与不可变对象

数值和字符串都是不可变对象,列表和字典均是可变对象:

可变和不可变指的是对象的内容可否被改变。图示如下:


通过上图,很容易理解可变和不可变的含义,也就理解了为什么元组中的元素为列表时可以修改的原因。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值