python第七课 列表

一、什么是列表

列表是python中最基本也是最常见的数据结构之一。列表中的每个元素都被分配一个数字作为索引,用来表示该元素在列表内所在的位置。元素的索引序号从0开始,以此类推。

lst = ['111','333','555','777']
print(lst[0],lst[3])
>>> 111  777

二、列表的创建

列表可以通过两种方式创建:直接通过符号创建和通过类型声明创建。如下

lst1 = [] #通过符号创建
lst2 = list() #通过已定义声明函数创建
print(type(lst1))
print(type(lst2))
>>> <class 'list'>
>>> <class 'list'>

三、查看列表中的元素

在一中我们创建了一个列表lst = [‘111’,‘333’,‘555’,‘777’],下面我们将对其中的元素进行操作。

python的列表是一个有序可重复的元素集合,可嵌套、迭代、修改、分片、追加、删除、成员判断。

1、嵌套

列表是一种容器型的序列:字符串是一种扁平的序列
在列表中可以嵌套另外一个列表,形成一个多维的空间

如:

lst3 = [5, 96, 8, [64, 5]]
print(lst3)
print(lst3[3][1]) #访问序列3,元素中的序列为1的元素
>>> [5, 96, 8, [64, 5]]
>>> 5

2、迭代

在上述中我们创建了列表lst3可以使用迭代的方式进行访问

i = 0
while i < len(lst3):
    print(lst3[i])
    i += 1
>>> 5
>>> 96
>>> 8
>>> [64, 5]

3、修改

lst3 = [5, 96, 8, [64, 5]]
print(lst3)
lst3[2] = 'hello' #更改序列2元素的值为‘hello’
lst3[3][1] = 888  #更改序列3元素中序列1元素的值为 888
print(lst3)
>>> [5, 96, 8, [64, 5]]
>>> [5, 96, 'hello', [64, 888]]

4、分片(切片)

在进行数据访问时我们可以对数据的某一部分进行访问。

print(lst3)
print(lst3[2:]) #访问lst3中序列2及其以后的元素
print(lst[:2]) #访问lst3中系列2之前的元素
print(lst3[1:3]) #访问lst3中序列1到序列3的所有元素(左闭右开)
>>> [5, 96, 'hello', [64, 888]]
>>> ['hello', [64, 888]]
>>> ['111', '333']
>>> [96, 'hello']

5、追加元素

追加可以通过几种不同的方式进行追加:

lst3 = [5, 96, 'hello', [64, 888]]
print(lst3)
lst3.append('724') #使用append()函数在lst3后追加元素'724'
print(lst3)
lst3 = lst3 + [555,'world',[56,238]] #使用符号拼接列表
print(lst3)
print(lst3 * 2) #使用*号将列表中所有元素复制一次,* 3 即是讲列表复制三次再拼接起来
>>> 5, 96, 'hello', [64, 888]]
>>> [5, 96, 'hello', [64, 888], '724']
>>> [5, 96, 'hello', [64, 888], '724', 555, 'world', [56, 238]]
>>> [5, 96, 'hello', [64, 888], '724', 555, 'world', [56, 238], 5, 96, 'hello', [64, 888], '724', 555, 'world', [56, 238]]

将一个列表中的部分值加入到另外一个列表中

lst1 = ['111','333','555','777']
lst3 = [5, 96, 'hello', [64, 888], '724', 555, 'world', [56, 238]]
lst3.extend([lst1[0],lst1[2]]) #将lst1中系列0和序列2元素添加到lst3中
print(lst3)
>>> [5, 96, 'hello', [64, 888], '724', 555, 'world', [56, 238], '111', '555']

extend()函数和append()函数的区别在于前者可以一次添加多个元素,而后者一次只能添加一个元素

插值 : 使用 insert()函数在已有列表中插入一个元素

lst = [5, 96, 'hello', [64, 888]]
lst.insert(2, 'world') #在序号2的位置插入一个值'world'
print(lst)
>>> [5, 96, 'world', 'hello', [64, 888]]

6、元素的删除

使用pop()函数可以对指定序号上的元素进行

lst3 = [5, 96, 'hello', [64, 888]]
print(lst3)
lst3.pop(2)
print(lst3)
>>> [5, 96, 'hello', [64, 888]]
>>> [5, 96, [64, 888]]

使用del()函数对指定序号上的元素进行删除

lst3 = [5, 96, 'hello', [64, 888]]
print(lst3)
del(lst3[1])
print(lst3)
>>> [5, 96, 'hello', [64, 888]]
>>> [5, 'hello', [64, 888]]

使用remove()函数对指定元素进行删除

lst3 = [5, 96, 'hello', [64, 888], 5, 758]
print(lst3)
lst3.remove(5) #会将查找到的第一个元素删除
print(lst3)
>>> [5, 96, 'hello', [64, 888], 5, 758]
>>> [96, 'hello', [64, 888], 5, 758]

7、成员判断

使用 in 判断list中是否含有某个元素

lst3 = [5, 96, 'hello', [64, 888], 5, 758]
print(5 in lst3)
>>> True

四、列表的一些其他操作

从数据结构角度看,python的列表是一个可变长度的顺序存储结构,每一个位置存放的都是对象的指针。

可以通过id()函数对列表中的元素的位置进行查询

lst3 = [5, 96, 'mm', 5, 758]
new_lst3 = lst3.copy()
print(id(new_lst3),id(lst3))
print(id(new_lst3[2]),id(lst3[2]))
>>> 2255969464840 2255968535560
>>> 2255967911024 2255967911024

使用,copy()函数会重新开辟一个内存区,但是两个列表的同一位置元素的地址是一样的

列表 降重 操作

当一个列表是一维的时候,内部元素出现重复,可以通过降重讲重复元素去除。

ids = [1,4,3,3,4,2,3,4,5,6,1]
pp = list(set(ids))
print(pp)
>>> [1, 2, 3, 4, 5, 6]
lst3 = [5, 96, 'mm', 5, 758]
pp = list(set(lst3))
print(pp)
>>> [96, 'mm', 5, 758]

去列表去重,不改变原来的顺序,还可以使用一个空列表把原列表里面不重复的数据"装起来",例如:

list2 = []
list1 = [1,2,3,2,2,2,4,6,5]
for i in list1:
    if i not in list2:
        list2.append(i)
print(list2)
>>> [1, 2, 3, 4, 6, 5]
定位

精确定位某个元素的位置 .index()函数

lst3 = [5, 96, 'mm', 5, 758]
val = lst3.index('mm')
print('mm的位置在',val)
>>> mm的位置在 2
统计

统计某个元素在该列表中出现的次数 .count()函数

ids = [1,4,3,3,4,2,3,4,5,6,1]
print('在ids中7出现了%d次'%ids.count(7))
print('在ids中4出现了%d次'%ids.count(4))
print('在ids中5出现了%d次'%ids.count(5))
print('在ids中2出现了%d次'%ids.count(2))
>>> 在ids中7出现了0次
>>> 在ids中4出现了3次
>>> 在ids中5出现了1次
>>> 在ids中2出现了1次
反序

将列表的顺序取反状态

ids = [1,4,3,3,4,2,3,4,5,6,1]
ids.reverse()
print(ids)
>>> [1, 6, 5, 4, 3, 2, 4, 3, 3, 4, 1]

ids.reverse()本身的值为一个空值,返回None。

排序

使用.sort()函数进行排序,语法list.sort(cmp=None, key=None, reverse=False)

cmp – 可选参数, 如果指定了该参数会使用该参数的方法进行排序。

key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。

reverse – 排序规则,reverse = True 降序, reverse = False 升序(默认)。

ids = [1,4,3,3,4,2,3,4,5,6,1]
ids.sort()#不传参数默认为升序排列
print(ids)
ids.sort(reverse= True)#传参reverse = True降序排列
print(ids)
>>> [1, 1, 2, 3, 3, 3, 4, 4, 4, 5, 6]
>>> [6, 5, 4, 4, 4, 3, 3, 3, 2, 1, 1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值