Python列表

  • 列表用于存储任意数目、任意类型的数据集合

  • 列表是内置可变序列,是包含多个元素的有序连续的内存空间。

  • 列表的大小可变,根据需要随时增大或减小

列表常用方法

方法

要点

描述

list.append(x)

增加元素

将元素x增加到列表list尾部

list.extend(aList)

增加元素

将列表alist所有元素加到列表list尾部

list.insert(index,x)

增加元素

在列表list指定位置index处插入元素x

list.remove(x)

删除元素

在列表list中删除首次出现的指定元素x

list.pop([index])

删除元素

删除并返回列表list指定为index处的元素,默认是最后一个元素

list.clear()

删除所有元素

删除列表所有元素,并不是删除列表对象

list.index(x)

访问元素

返回第一个x的索引位置,若不存在x元素抛出异常

list.count(x)

计数

返回指定元素x在列表list中出现的次数

len(list)

列表长度

返回列表中包含元素的个数

list.reverse()

翻转列表

所有元素原地翻转

list.sort()

排序

所有元素原地排序

list.copy()

浅拷贝

返回列表对象的浅拷贝

列表创建方法
  • range()创建整数列表(a = list(range(start, end, step)))

a = list(range(10))    # a = [0,1,2,3,4,5,6,7,8,9]
  • 推导式生成列表

a = [x*3  for  x  in range(5)]    # a = [0,3,6,9,12]
​
# 使用if过滤元素
b = [x*2 for x in range(100) if x%9==0]
# b = [0, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198]

当列表增加和删除元素时,列表会自动进行内存管理,大大减少程序员的负担,但这个特点设计列表元素的大量移动,效率较低。除非必要,一般只在列表尾部添加元素或删除元素,这样会=可以大大提高列表的操作效率。

  • append()方法

原地修改列表对象,是真正的列表尾部添加新的元素,速度最快。

  • +运算符操作

并不是真正的尾部添加元素,而是创建新的列表对象,将源列表的元素和新列表的元素一次复制到新的列表对象中,这样会涉及大量的复制操作,对于操作大量元素不建议使用。

  • extend()方法

将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象。

  • insert()方法

使用insert()方法可以将指定的元素插入到列表对象的任意制定位置。这样会让插入位置后面所有的元素进行移动,会影响处理速度。涉及大量元素时,尽量避免使用。类似发生这种移动的函数还有:remove()、pop()、del(),它们在删除非尾部元素时也会发生操作位置后面元素的移动。

  • 乘法扩展

使用乘法扩展列表,生成一个新列表,新列表元素是原列表元素的多次重复

列表元素的删除(删除元素的底层还是元素的拷贝)
  • del。删除列表指定位置的元素

  • pop()。删除并返回指定元素,如果未指定位置则默认操作列表最后一个元素

  • remove()。删除首次出现的指定元素,若不存在该元素则抛出异常

列表切片
  • [:] 提取整个列表

  • [start:]从start索引开始到结尾

  • [:end]从头开始知道end-1

  • [start:end]从start到end-1

  • [start:end:step]从start提取到end-1,步长是step

切片操作时,起始偏移量和终止偏移量不在 [0,字符串长度-1] 这个范围,也不会报错。起始偏移量小于0则会当做0,终止偏移量大于“长度-1”会被当成”长度-1”。

列表遍历
a = [10,20,30,40]
for item in a:       
  print(item)

复制列表所有的元素到新的列表对象
list1 = [10,20,60]
list2 = list1

上述操作只是将list2也指向了列表对象,即list1和list2的地址值是相同的,列表本身的元素并没有复制。

list1 = [30,40,50]
list2 = [] + list1  #生成了新列表对象

列表排序
# 修改原列表,不建新列表的排序

a = [20,10,30,40]
id(a)    #46017416
a.sort()     #默认是升序排列 [10, 20, 30, 40]

a = [10,20,30,40]
a.sort(reverse=True)  #降序排列 [40, 30, 20, 10]

import random
random.shuffle(a)  #打乱顺序 [20, 40, 30, 10]
# 建新列表的排序
# sorted()方法返回新的列表,不对原列表做修改
a = [20,10,30,40]
id(a)    # 46016008

b = sorted(a)     #默认升序 b = [10, 20, 30, 40]
id(b)             # 45907848

c = sorted(a,reverse=True)  #降序 [40, 30, 20, 10]
"""
内置函数reversed()也支持进行逆序排列,与列表对象reverse()方法不同的是,内置函数reversed()不对原列表做任何修改,只是返回一个逆序排列的迭代器对象。
"""

a = [20,10,30,40]
c = reversed(a)    # <list_reverseiterator object at 0x0000000002BCCEB8>
list(c)    # [40, 30, 10, 20]
list(c)    # []
# 两次结果不一样,因为迭代器对象在第一次时已经遍历结束了,第二次不能再使用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值