Python列表之班荆道故

时间:2021-10-29 09:10:26

列表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