Python学习笔记——列表

创建和填充列表

  • 字面量法
    Python程序员将它称为一个字面列表,因为这个列表会一次性完成创建和填充(将列表中的对象赋给列表)
>>> odds=[1,3,5,7,9]
  • 在代码中“扩展”列表
    创建和填充列表的另一种方法是在代码中“扩展”列表:随着代码的执行,为列表追加对象
>>> nums=[]#创建空列表
>>> nums.extend([2,3,4])
>>> nums
[2, 3, 4]
  • 使用list()函数
    list()创建空列表;list(iterable)使用可迭代对象中的项目来创建列表
>>> ch_list=list("Hi!")
>>> ch_list
['H', 'i', '!']

列表常用方法(函数)

  • append(object)/insert(index, object)在末尾/其他位置(某索引之前) 添加对象
  • extend(iterable)将另一个列表(或其他可迭代对象)中的所有对象添加到当前列表
  • remove(value)删除(列表中第一次出现的)指定对象值
  • pop([index])删除指定索引上的对象(无参数时默认删除最后一个对象)
  • 结合appendpop,可以直接将列表当作栈来使用
  • 由于列表的特性,在列表末尾增删元素很快,但在首部增删元素则很慢(需要移动后面所有元素),因此,若要实现队列,应该用collections.deque快速地从两端操作
  • list.index(x[, start[, end]])找出x的第一次出现的下标(元素不存在时,抛出ValueError异常
  • list.count(obj)求出现次数
  • list.reverse()反转元素
  • list.sort(cmp=None, key=None, reverse=False)对原列表排序
  • list.copy()得到列表的拷贝
  • 了解更多方法,在>>>提示窗口中输入help(list)help(list.append)

复制列表:看起来像复制,但其实不是

要把一个现有列表复制到另一个列表

>>> first=[1,2,3]
>>> second=first
>>> second
[1, 2, 3]

注意:赋值语句=不能将first的副本复制给second,只能让另一个变量引用当前列表
first和second实际上共享同一个引用(指向同一列表),操作此列表时,两者将同时被改变

正确做法:

>>> first=[1,2,3]
>>> second=first.copy()
>>> second
[1, 2, 3]

字符串和列表的转化

使用list方法和join方法,两者原理都是传入一个可迭代对象iterable进行处理

>>> string="Hi!"

>>> sList=list(string)#字符串转列表
>>> sList
['H', 'i', '!']

>>> ''.join(sList)#列表转字符串
'Hi!'

中括号记法

就像访问数组那样,Python访问列表中的对象时也支持中括号记法
另外, Python扩展了这个记法,对这个标准行为有所改进:

  • 它还支持负索引值(-1,-2,-3等)
    不仅能相对于列表前端来访问列表,还能相对于列表的末尾访问列表
>>> nums=[0,1,2,3]
>>> nums[-1]
3
  • 还支持按照一定范围从列表中取出切片
    格式:list[start:stop]list[start:stop:step]
    未指定start则默认为0,未指定stop则默认为最大值,未指定step则默认为1
>>> nums=[0,1,2,3]

>>> nums[1:]
[1, 2, 3]

>>> nums[-2:]
[2, 3]

>>> nums[0:3:2]
[0, 2]

>>> nums[::-1]
[3, 2, 1, 0]

这些例子中,结果都获得了一些切片。
“切片”是列表的一个片段,它不改变原列表(除非将切片赋值给原列表)
对比之前,列表方法改变了原列表,从而我们说列表方法是破坏性的,切片是非破坏性

  • 切片无处不在,切片记法并不只用于列表。
    实际上,可以利用[start:stop:step]截取Python中的任意序列
  • 切片可以用于for循环
    例如for ch in string[7:]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值