Python列表之班荆道故
列表list初识
列表是python的基础数据类型之一 ,它是以[ ]括起来, 每个元素用' , '隔开而且可以存放各种数据类型:
list列表的定义:
list_ = []
list_1 = ["aaa","bbb","cccc","ddd"] list_2 = [1,2,3,4,5] list_3 = ["abc",145,True,["小明","小红",278,33.9],25.9]
列表的索引和切片操作:
list_1 = ['a','b','c','d','e','f','g','h','k'] # 列表的索引 print(list_1[0],list_1[1],list_1[2]) # 索引-1代表最后一个元素,-2代表倒数第二个元素依次类推 print(list_1[-1],list_1[-2],list_1[-3]) # 列表的切片[start,end,sep] # 切片 1 print(list_1[0:3]) # 切片 2 设置步长,隔一个打印一个 print(list_1[0:-1:2]) # 切片 3 倒叙打印 print(list_1[-1:0:-1]) # 切片 3 倒叙打印,隔一个打印一个 print(list_1[-1:0:-2]) # 打印内如如下 a b c k h g ['a', 'b', 'c'] ['a', 'c', 'e', 'g'] ['k', 'h', 'g', 'f', 'e', 'd', 'c', 'b'] ['k', 'g', 'e', 'c']
列表的访问与字符串切片类似,通过索引访问列表元素,列表的切片也与字符串类似。
列表的常用方法
append(object):向列表的末尾追加元素
list_1 = ["abc",145,True,["小明","小红",278,33.9],25.9] list_1.append("我是追加的") # 打印如下内容: ['abc', 145, True, ['小明', '小红', 278, 33.9], 25.9, '我是追加的']
clear():清空列表。
list_1 = ['a','b','c','d','e','f','g','h','k'] print(list_1) print(list_1.clear()) # 打印内如如下 ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'k'] None
extend(可迭代对象):列表中迭代添加数据:
list_1 = ['a','b','c'] list_1.extend("我是迭代的") print(list_1) # 打印内容如下 ['a', 'b', 'c', '我', '是', '迭', '代', '的']
注意extend(参数)必须是可迭代的对象如list、str、dict、tuple、set等,如整形、bool是不可迭代的所以不能用作参数
insert(index,object):列表中插入元素。
参数:
index:要插入的位置。
object:插入的数据。
示例:
list_1 = ['a','b','c'] list_1.insert(2,"我是插入的") print(list_1) # 如果用户输入的索引超过列表的范围则添加到列表的末尾。 list_1.insert(5,'哈哈') print(list_1) # 打印内容如下 ['a', 'b', '我是插入的', 'c'] ['a', 'b', '我是插入的', 'c', '哈哈']
注意:如果用户输入的索引超过列表的范围则添加到列表的末尾。
del: 删除列表,或者删除列表中的元素。
list_1 = ['a','b','c'] del list_1[0] # 删除列表的第一个元素 print(list_1) del list_1 # 删除列表 print(list_1) # 打印内容如下 ['b', 'c'] Traceback (most recent call last): File "C:\Users\id_iot\Desktop\1.py", line 5, in <module> print(list_1) NameError: name 'list_1' is not defined
注意:del是没有返回值的。
pop(index):删除列表元素,如果没找到索引报错。
list_1 = ['a','b','c','d','e'] # 删除列表的第三个元素 buf = list_1.pop(2) print(f'删除的元素是:{buf}') # 删除列表的最后一个元素 buf = list_1.pop() print(f'删除的元素是:{buf}') # 如果删除的索引超过范围会报错。 buf = list_1.pop(10) print(list_1) # 打印内容如下 删除的元素是:c 删除的元素是:e Traceback (most recent call last): File "C:\Users\id_iot\Desktop\1.py", line 9, in <module> buf = list_1.pop(10) IndexError: pop index out of range
注意:pop()删除是有返回值的,可以用一个变量来接收被删除的数据。
remove(object):根据元素名删除元素。
list_1 = ['a','b','c','d','e'] # 删除列表的一个元素 list_1.remove('b') print(list_1) # 打印内如如下 ['a', 'c', 'd', 'e']
copy():拷贝整个列表(浅拷贝)。
list_1 = ['a','b',['c','d']] temp = list_1.copy() # 像列表中添加一个元素 list_1.append('Hello') print(f'list_1:{list_1}') print(f'temp:{temp}') print('-'*50) # 像列表中的嵌套列表添加元素 list_1[2].append('word') print(f'嵌套列表添加元素后list_1:{list_1}') print(f'嵌套列表添加元素后temp:{temp}') # 打印内如如下 list_1:['a', 'b', ['c', 'd'], 'Hello'] temp:['a', 'b', ['c', 'd']] -------------------------------------------------- 嵌套列表添加元素后list_1:['a', 'b', ['c', 'd', 'word'], 'Hello'] 嵌套列表添加元素后temp:['a', 'b', ['c', 'd', 'word']]
reverse():列表倒序,将列表中的内容倒过来(是对列表索引位置的操作,而不是按元素将升序转为降序)
list_1 = ['a','b',['c','d']] list_1.reverse() print(list_1) # 打印内容如下 [['c', 'd'], 'b', 'a']
注意:reverse()函数只能操作本层元素,对于内部嵌套的数据不能进行改变。
sort(key=None, reverse=False):排序,字符串是按照ASCII码表进行排序。
参数:
key:排序规则,是一个函数名,或者是lambda。
reverse:如果为True降序,为Flase是升序。
示例:
list_1 = [1,8,3,6,2] list_1.sort() # 默认升序排列 print(f'升序排序:{list_1}') list_1.sort(reverse = True) # 降序排列 print(f'降序排序:{list_1}') print('-'*40) temp = ['a','z','b','f','d'] temp.sort() # 默认升序排列 print(f'升序排序:{temp}') temp.sort(reverse = True) # 降序排列 print(f'降序排序:{temp}') print('-'*40) buf = [(1,2),(1,8),(1,3),(1,6)] buf.sort(key=lambda i:i[1]) # 使用匿名函数的方式进行升序排列 print(f'升序排序:{buf}') def fun(em): # 排序规则 return em[1] buf.sort(key=fun,reverse=True) # 使用函数的方式进行降序排列 print(f'降序排序:{buf}') buf = [1,2,'a'] buf.sort() # 如果列表的元素不是同类型的会报错 print(buf)
# 打印内容如下 升序排序:[1, 2, 3, 6, 8] 降序排序:[8, 6, 3, 2, 1] ---------------------------------------- 升序排序:['a', 'b', 'd', 'f', 'z'] 降序排序:['z', 'f', 'd', 'b', 'a'] ---------------------------------------- 升序排序:[(1, 2), (1, 3), (1, 6), (1, 8)] 降序排序:[(1, 8), (1, 6), (1, 3), (1, 2)] Traceback (most recent call last): File "C:\Users\id_iot\Desktop\1.py", line 29, in <module> buf.sort() # 如果列表的元素不是同类型的会报错 TypeError: '<' not supported between instances of 'str' and 'int'
sort()排序只支持同种类型进行对比,不支持其它类型进行对比排序。例如字符串只能和字符串相比,整形只能和整形相比较。
count(value):统计元素value出现的次数,如果找不到返回0。
list_1 = [1,8,2,6,5,2] print(f'2出现的个数:{list_1.count(2)}') print(f'9出现的个数:{list_1.count(9)}') # 打印内容如下 2出现的个数:2 9出现的个数:0
index(value,start,end):如果只指定value,会在整个列表中进行查找value的索引(找到第一个元素的索引后便不再继续查找)。如果找不到value会报错。可以指定start和end来指定查找范围。.
value:要查找的元素。
start:查找的起始位置。
end:结束位置。
示例:
list_1 = [1,8,2,6,5,2,9] print(f'2的索引是:{list_1.index(2)}') print(f'2从索引3到末尾的索引是:{list_1.index(2,3,-1)}') print(f'7的索引是:{list_1.index(7)}') # 打印内容如下 2的索引是:2 2从索引3到末尾的索引是:5 Traceback (most recent call last): File "C:\Users\id_iot\Desktop\1.py", line 4, in <module> print(f'7的索引是:{list_1.index(7)}') ValueError: 7 is not in list
range(start,end,step):与列表的切片类似,从一个范围内提取数据。正常start应小于end也就是从小到大的原则,如果start大于end,需要将step设置为负数。下面是使用实例:
for i in range(100): # 打印0到100 print(i) for i in range(100,0,-1): # 倒序打印100-1 print(i) for i in range(1,100,2): # 打印1-100所有奇数 print(i) for i in range(2,101,2): # 打印1-100所有偶数 print(i)
下一篇:python 字典,集合:https://www.cnblogs.com/caesar-id/p/10225838.html