[Python]列表List操作简介


列表是Python中最基本、最常用的序列数据结构;列表中元素不需要具有相同的类型。列表中的每个元素都对应一个位置索引(从0开始)。

基础

列表做为一种序列结构,可以索引,切片,加,乘,检查成员。

列表中:+ 号用于组合列表,* 号用于重复列表。

Python 表达式结果描述
len([1, 2, 3])3长度
[1, 2, 3] + [4, 5, 6][1, 2, 3, 4, 5, 6]组合
[‘Hi!’] * 4[‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’]重复
3 in [1, 2, 3]True元素是否存在于列表中

创建

列表中元素的数据类型可以不同,可以是任意的基本类型或者是自定义类型。

#创建空列表
one = []
two = list()

#创建带有元素的列表
three = [1,3,5]
example = [1, True, "test", 2.3]

以下使用example为例说明。

切片

切片是为了获得序列某个区间的元素序列,适用于列表、元组、字符串、range对象等。可以用切片截取列表中任何部分来获得一个新的列表,也可以进行元素的增、删、改。

切片操作通过使用两个冒号分隔3个数字来实现[start:end:step],对应位置为空时,使用默认值:

  • 第一个数字表示切片的开始位置,当省略时:
    • step>0时,默认值为0;
    • step<0时,默认值为length-1(列表长度-1);
  • 第二个数字表示切片的终止位置(但不包含该位置的元素),当省略时:
    • step>0时,默认值为length(列表长度);
    • step<0时,默认值为-1(即首元素前一个位置);
  • 第三个数字为切片的步长,默认为1;
  • start与end若小于0(设为value),则实际值为(length+value);

范围

切片超出列表范围时,不会报错:

  • 尝试获取超出列表范围的切片,返回一个空列表;
  • 切片中索引项的起始值大于结束值,返回一个空列表;
# 复制列表
other = example[:]

# index开始的所有项
last = example[index:]

# index前所有项(不包括index自身)
front = example[:index]

步长

步长用于跳过不需要的项,默认为1(即获取全部):

  • step > 0,从 start 位置往后,每 step 取一个值;
  • step < 0,从 start 位置往前,每 step 取一个值
# 逆序
reverse = example[::-1]

# 前三个逆序
front3 = example[2::-1]  # 第二个(即end)一定要空
front3 = example[2:0:-1] # 获取第二个与第三个,并逆序

访问

可通过下表获取与设定列表中的值。

取值

获取列表中的元素:

  • 单个值:lst[index]
  • 范围:lst[startIndex, endIndex],返回[start,end)范围值作为子列表;

允许索引为负数(表示从右向左数,最右边的为-1),可想象成实际索引为:len(lst)+index(index<0)

索引值越界时会抛出IndexError: list index out of range的异常。

print(example[1])
example[1] = 'False'

遍历

通过for...in可方便地遍历列表中元素:

for ele in example:
	print(ele)

通过列表解析的方式:

[print(ele) for ele in example]

通过enumerate遍历(获取索引与元素):

for index, ele in enumerate(example):
    print(index, ele)

更新

更新列表中已有的值,可直接通过下标赋值即可:

example[1] = "False" # 可同时改变元素类型

添加新的元素:

  • 尾部追加:
    • append:把参数作为整体(一个元素)追加到尾部;
    • extend:对于列表或者元祖依次把每个元素追加到尾部;
  • 中间某个位置插入元素:lst.insert(index, ele)
example.append(('add1', 'add2'))  # 列表尾部添加一个元素(元祖)
example.extend(('add1', 'add2'))  # 列表尾部添加两个元素(add1和add2)
example.insert(1, ('add1', 'add2')) # 在索引1处添加一个元素,元素[1:]依次后移

删除

删除列表中的元素:

  • 根据索引:
    • del单个:del example[index]
    • del范围:del example[start, end],删除[start, end)范围内元素;
    • pop成员函数(缺省移除最后一个元素):ele = example.pop(index)
  • 根据值:example.remove(ele),删除第一个和指定值相同的元素,若元素不存在会引发ValueError 错误;
  • 清空:example.clear()

列表函数

有以下列表函数:

序号函数
1cmp(list1, list2) 比较两个列表的元素
2len(list) 列表元素个数
3max(list) 返回列表元素最大值
4min(list) 返回列表元素最小值
5list(seq) 将元组转换为列表

列表比较

cmp比较两个列表时,如果两个元素不是同一种类型,则检查它们是否是数字。

  • 如果是数字,执行必要的数字强制类型转换,然后比较。
  • 如果有一方的元素是数字,则另一方的元素"大"(数字是"最小的")
  • 否则,通过类型名字的字母顺序进行比较。

如果有一个列表首先到达末尾,则另一个长一点的列表"大"。有元素都是相等的,那么返回0。

列表方法

列表有如下方法

序号方法
1list.append(obj) 在列表末尾添加新的对象
2list.count(obj) 统计某个元素在列表中出现的次数
3list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
4list.index(obj) 从列表中找出某个值第一个匹配项的索引位置
5list.insert(index, obj) 将对象插入列表
6list.pop(index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
7list.remove(obj) 移除列表中某个值的第一个匹配项
8list.reverse() 反向列表中元素
9list.sort(cmp=None, key=None, reverse=False) 对原列表进行排序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值