python学习笔记二

二、python序列

python中的序列包括列表,元组,字典,集合等

1.列表

  • 由于列表内存的自动管理,应尽量从列表的尾部插入元素,可以提高列表的处理速度
  • 列表中的元素类型可以不相同
  • 列表对象的常用方法:append(),insert(),extend(),remove(),pop(),clear(),sort(),copy()

(1)列表的删除
del命令删除整个列表
(2)列表元素的增加
方法一:+号的增加并不是真正意义上的增加元素,而是生成一个新的列表
方法二:append()方法,真正在尾部添加元素,推荐使用
注意:直接修改列表的值与使用下标的方式修改列表的值,列表对象在内存中地址变化的情况是不同的。

In [23]: a=[1,5,6,2,4]

In [24]: id(a)
Out[24]: 2822589145344

In [25]: a.append(10)

In [26]: id(a)
Out[26]: 2822589145344

In [27]: a=[1,5,6,2,4,10]

In [28]: id(a)
Out[28]: 2822603593216

方法三:insert()和extend()都属于原地操作,缺点是移动量大,影响处理速度,尽量避免在列表中见插入元素。
方法四:使用乘法扩展列表,从而得到一个新的列表
(2)列表元素的删除
方法一:del 删除指定位置元素
方法二:remove()和pop(),注意两个的不同点
(3)列表元素的访问和计数
访问用index()。计数count()
(4)成员资格判断
count(),in ,not in
(6)切片 [strat:syop:step]
见书上例题
(7)列表排序和逆序
排序:sort()与sorted()不同
逆序:reverse()和reversed()不同,注意以下

# b=[1, 2, 4, 5, 6, 10]
# b=[1, 2, 4, 5, 6, 10]
In [41]: a.reverse()
In [42]: a
Out[42]: [10, 6, 5, 4, 2, 1]

In [43]: new_b=reversed(b)
In [44]: new_b

Out[44]: <list_reverseiterator at 0x2912f9f2730>

In [45]: list(new_b)
Out[45]: [10, 6, 5, 4, 2, 1]

(8)用于序列操作的常用内置函数
len(),zip(),enumerate(),熟悉书上例子

2.元组

(1)元组的创建

In [45]: a_tuple=2,
Out[45]: (2,)
In [46]: a_turple=2,3
Out[46]: (1,2)

注意:使用del删除时,只能删除整个元组,元组属于不可变序列
(2)元组的特点

  • 只能使用切片访问对象,无法进行增删改等
  • 元组的访问和处理速度快于列表
  • 元组对不需要修改的数据进行了“写保护”,从内部上不允许修改其元素,从而使得代码更加安全
  • 如果元组内包含可变对象,这样的元组不能作为字典“键”或集合的元素

(3)序列解包
见书上例子
(4)生成器表达式

  • 生成器对象使用内置函数next()或者 _ _next _ _()访问下一个元素
  • 生成器对象中每个元素只能访问一次
  • 只能从前向后访问

3.字典

字典的键不允许重复,值可以
(1)字典的创建

a=dict()#空字典
a={'a':1,'b':2,'c':3}
dict.fromkeys(['a','b','c']) #给定键,不指名值

(2)字典元素的读取
方法一:使用get()返回指定键对应的值
方法二:items()返回键:值对
方法三:values()返回值,keys()返回键
方法四:使用序列解包读取键值对

In [85]: for key,value in a.items():
    ...:    print(key,value,sep=':')
    ...:
a:1
b:2
c:3

方法五:字典元素的添加与修改
方法一:直接按键添加值,不存在就添加一个新的
方法二:update()将另一个字典的键值对全部添加到字典里,如有相同,以新添加的为准
删除方法:clear,pop(),del()

4.集合

集合无序可变
集合的创建:set()或者直接s={2,3}
集合的添加:add()
删除:pop()pop不接受参数和remove(),clear(),del
集合的运算:交并补差以及子集测试运算符(<)

小结

1.列表,元组,字符串属于有序序列,集合,字典属于无序;元组,字符串属于不可变序列,其他三个可变
2.字典中的键不能时可变序列
3.集合中所有元素不得重复,使用集合可以快速提取出其他序列中的唯一元素
4.内置函数enumerate返回的是包含下标和元素值的元组

In [89]: for index,ch in enumerate('sddadd'):
    ...:     print((index,ch),end=';')
    ...:
(0, 's');(1, 'd');(2, 'd');(3, 'a');(4, 'd');(5, 'd');

习题笔记

1.range函数返回的是一个range对象
2.成员资格判断

In [90]: [3] in[1,2,3,4]
Out[90]: False

3.sort()函数没有返回值,或者是返回值是None
4.不可以使用del删除元组中部分元素

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只爱圣女果

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值