Python列表及其方法

Python基础之列表

数据结构是通过某种方式(如对元素进行编号)组织在一起的数据元素的集合,这些元素可以是数字或字符。在 Python 中,最基本的数据结构是序列(Sequence)。Python 包含 6 种内建序列,即列表、元组、字符串、Unicode 字符串、buffer 对象和 range 对象。其中比较常见的就是列表和元组,下面主要是对列表的操作。

Part1- - -通用序列操作:

  1. 索引(index):类似于数组,通过下标来访问序列中的元素
>>> group='2458973'
>>> group[0]
'2'
>>> group[-1]  #从右往左获取序列元素时,最右边元素索引下标为-1
'3'
>>> group[-7]
'2'
  1. 分片(slicing):通过冒号相隔的两个索引下标指定索引范围
>>> slic='0,1,2,3,4,5,6,7,8,9' 
>>> slic[6:11]
'3,4,5'
>>> slic[-5:] 
#使用负数分片时,若要使得到的分片结果包括序列结尾的元素,只需将第二个索引值设置为空即可
'7,8,9'
>>> slic=[0,1,2,3,4,5,6,7,8,9] #列表
>>> slic[0:9:2] #步长为2,提取偶数
[0, 2, 4, 6, 8]
>>> slic[1:9:2] #提取奇数
[1, 3, 5, 7]
>>> slic[9:0:-2] 
#从右边开始提取序列元素
[9, 7, 5, 3, 1]
#注意:使用负数步长时,要取得序列的第一个元素,即索引下标为 0 的元素,需要设置第二个索引为空。 
  1. 加法:生成新的列表,但不改变原先列表
>>> s='hello,' 
>>> w='world' 
>>> s+w 
'hello,world' 
#注意:只有类型相同的序列才能通过加号进行连接操作,不同类型的序列不能通过加号进行连接操作
>>> [1,2]+'hello' 
Traceback (most recent call last): 
  File "<pyshell#89>", line 1, in <module> 
    [1,2]+'hello' 
TypeError: can only concatenate list (not "str") to list 
  1. 乘法:在新的序列中,会将原来的序列将首尾相连重复n 次,得到一个新的变量值,赋给新的序列
>>> sq=[None]*5 #初始化 sq为含有 5个 None的序列 
>>> sq 
[None, None, None, None, None] 

Part2- - -获取序列长度、最大值、最小值

Python提供了获取序列长度、最大值、最小值的内建函数,分别对应为len、max、min

>>> slic=[0,1,2,3,4,5,6,7,8,9] #列表
>>> len(slic) #长度
10
>>> max(slic) #最大值
9
>>> min(slic) #最小值
0

Part3- - -列表操作

  1. 创建空列表,进行初始化:a=list()
  2. 列表更新:
>>> group=[0,1,2,3,4] 
>>> group[1]=9 #也可用字符串,如 group[1]='Niko'
>>> group 
[0, 9, 2, 3, 4]
#注意:list()方法可以直接将字符串转换为列表
>>> test=list('Hello World')
>>> test
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']

part4- - -列表方法

  1. append()方法:在列表的末尾添加新对象
    list.append(obj) list 代表列表,obj 代表待添加的对象
>>> test=[2,4,5,6,8]
>>> test.append(7)
>>> test
[2, 4, 5, 6, 8, 7]
>>> test.append('test')
>>> test
[2, 4, 5, 6, 8, 7, 'test']
  1. extend()方法:列表的扩展,即在列表末尾一次性追加另一个列表中的多个值(用新列表扩展原来的列表)
    list.extend(seq) list 代表被扩展列表,seq 代表需要追加到list 中的元素列表
>>> a=['hello','world']
>>> b=['python','is','funny']
>>> a.extend(b)
>>> a
['hello', 'world', 'python', 'is', 'funny']
  1. insert()方法:用于将对象插入列表
    list.insert(index,obj) list 代表列表,index 代表对象obj 需要插入的索引位置,obj 代表要插入列表中的对象
>>> num=[1,2,3]
>>> print('插入之前的num:',num)
插入之前的num: [1, 2, 3]
>>> num.insert(2,'插入位置在2 之后,3 之前')
>>> print('插入之后的num:',num)
插入之后的num: [1, 2, '插入位置在2 之后,3 之前', 3]
  1. sort()方法:对原列表进行排序
    list.sort(func) ,list 代表列表,func 为可选参数,如果指定fun()参数,就使用参数指定的比较方法进行排序
>>> num=[5,8,1,3,6]
>>> num.sort()
>>> print('num 调用sort 方法后:',num)
num 调用sort 方法后: [1, 3, 5, 6, 8]

#注意:sort()方法会改变原列表,若不想改变可以进行 分片 or 复制
>>> num=[5,8,1,3,6]
>>> n=num #将列表num 赋值给n
>>> n.sort()
>>> print('变量n 的结果是:',n)
变量n 的结果是: [1, 3, 5, 6, 8]
>>> print('num 的结果是:',num) #num 也被排序了
num 的结果是: [1, 3, 5, 6, 8]
>>> num=[5,8,1,3,6]
>>> n=num[:] #将列表num 切片后赋值给n
>>> n.sort()
>>> print('变量n 的结果是:',n)
变量n 的结果是: [1, 3, 5, 6, 8]
>>> print('num 的结果是:',num) #num 保持原样
num 的结果是: [5, 8, 1, 3, 6]
  1. copy()方法:用于复制列表
    list.copy() list 代表列表,不需要传入参数。
>>> field=['study','python','is','happy']
>>> copyfield=field.copy()
>>> print('复制操作结果:',copyfield)
复制操作结果: ['study', 'python', 'is', 'happy']
  1. remove()方法:用于移除列表中某个值的第一个匹配项
    list.remove(obj) list 代表列表,obj 为列表中要移除的对象
>>> good=['女排','精神','中国','精神','学习','精神']
>>> good.remove('精神') #移除'精神'
>>> print('移除后列表good:',good)
移除后列表good: ['女排', '中国', '精神', '学习', '精神']
#注意:remove()只移除列表中找到的第一个匹配值,找到的第二个之后的匹配值不会被移除。
  1. pop()方法:用于移除列表中的一个元素,并且返回该元素的值;在使用pop()方法时,若没有指定需要移除的元素,则默认移除列表中的最后一个元素。
    在Python 中,pop()方法是唯一一个既能修改列表又能返回元素值(除了None)的列表方法。使用pop()方法可以实现一种常见的数据结构—栈。
    list.pop(obj=list[‐1]) list 代表列表,obj 为可选择的参数,代表要移除的列表元素对象。
>>> field.pop() #不传参数,默认移除最后一个元素
'funny'
>>> print('移除元素后的field:',field)
移除元素后的field: ['hello', 'world', 'python', 'is']
>>> field.pop(3) #移除编号为3 的元素
'is'
>>> print('移除元素后的field:',field)
移除元素后的field: ['hello', 'world', 'python']
>>> field.pop(0)
'hello'
>>> print('移除元素后的field:',field)
移除元素后的field: ['world', 'python']
  1. reverse()方法:用于反转列表中的元素
    list.reverse() list 代表列表,该方法不需要传入参数
>>> num=[1,2,3]
>>> num.reverse()
>>> print('列表反转后:',num)
列表反转后: [3, 2, 1]
  1. clear()方法:用于清空列表,类似于 del a[:]
    list.clear() list 代表列表,不需要传入参数
>>> field=['study','python','is','happy']
>>> field.clear()
>>> print('field 调用clear 方法后的结果:',field)
field 调用clear 方法后的结果: []
  1. count()方法:用于统计某个元素在列表中出现的次数
    list.count(obj) list 代表列表,obj 代表列表中统计的对象
>>> field=list('hello,world')
>>> field.count('o') #统计字母‘O’出现的次数
2
  1. 高级排序:
    如果希望元素能按特定方式进行排序(不是 sort()方法默认的按升序排列元素),就可以自定义比较方法;
    sort()方法有两个可选参数,keyreverse。要使用它们,就要通过名字指定,称为关键字参数
>>> field=['study','python','is','happy']
>>> field.sort(key=len) #按字符串由短到长排序
>>> field
['is', 'study', 'happy', 'python']
>>> field.sort(key=len,reverse=True) #按字符串由长到短排序,传递两个参数
>>> field
['python', 'study', 'happy', 'is']
>>> num=[5,8,1,3,6]
>>> num.sort(reverse=True) #排序后逆序
>>> num
[8, 6, 5, 3, 1]
  • 由输出结果可知,sort()方法带上参数后的操作是很灵活的,可以根据自己的需要灵活使用该方法。在实际项目应用中,高级排序应用的场景比较多,也各有特色,不同的项目会有不同的需求场景,需要视具体项目而定。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值