名城建设有限公司网站,宁波seo排名方案,wordpress主题无法删除,苏州微信网站一、列表的定义
name [小明, 小红, 笑笑]
二、列表的使用
除了序列中的操作#xff0c;列表还有一些其他的操作。
#xff08;1#xff09;不使用列表方法对列表进行修改
1#xff1a;通过索引修改列表中的值
name [Kit…一、列表的定义
name [小明, 小红, 笑笑]
二、列表的使用
除了序列中的操作列表还有一些其他的操作。
1不使用列表方法对列表进行修改
1通过索引修改列表中的值
name [Kitty, Julie, Ross]
name[1] egon
print(name) # [Kitty, egon, Ross]
2通过切片修改一定范围的值切片赋值替换的长度等于被替换的长度
list_str [k,i,t,t,y]
list_str[1:3] ab
print(list_str) # [k,a,b,t,y]
3切片赋值替换原列表中长度不同的值替换的长度大于/小于被替换的长度
list_str [k,i,t,t,y]
print(list_str[1:3]) # [i, t]
# 替换的长度大于被替换的长度
list_str[1:3] python
print(list_str) # [k, p, y, t, h, o, n, t, y]
# 替换的长度小于被替换的长度
list_str[1:3] p
print(list_str) # [k, p, t, y]
4在列表中插入值
4.1在某个具体的索引位置进行插入
例已知list_str [k,y]得到list_str [k,i,t,t,y]
list_str [k,y]
print(list_str[1:1]) # []
list_str[1:1] [i,t,t]
print(list_str) # [k, i, t, t, y]
注释list_str[1:1]表示在列表list_str中索引为1的位置占了一个位置然后将[i,t,t]进行解包将每个元素从索引1开始依次进行插入
4.2在某个具体的位置将值替换掉
例已知nums [2,3,4]想要得到nums[2,5,6,7,4]
nums [2,3,4]
print(nums[1:2]) # [3]
nums[1:2] [5,6,7]
print(nums) # [2, 5, 6, 7, 4]
在这里我犯了一个错误认为nums[1]和nums[1:2]得到的结果是一样的于是我就直接把nums[1][5,6,7]最后得到的结果是[2,[5,6,7],4]才发现nums[1]和nums[1:2]得到的结果是不一样的只是它两的值是一样的都是3nums[1]得到的是一个具体的值3nums[1:2]得到的结果是一个列表[3],而nums[1][5,6,7]就是将索引1的值替换成了一个列表。
5删除列表中的元素
5.1切片删
例已知list_str [k,i,t,t,y]得到list_str [k,i,y]
list_str [k,i,t,t,y]
list_str[2:4] []
print(list_str) # [k, i, y]
5.2使用del删除
list_str [k,i,t,t,y]
del list_str[2:4]
print(list_str) # [k, i, y]
2使用列表方法进行操作列表
1增加元素append()在列表的末尾追加一个对象
使用方法list.append(object)
返回值为None修改了原列表
nums [1,2,3,4]
result nums.append(5)
print(result) # None
print(nums) # [1, 2, 3, 4, 5]
2增加元素extend()在列表的末尾一次性追加另一个序列的多个值
使用方法list.extend(object)
返回值为None修改了原列表
# 追加列表
nums [1,2,3,4]
nums1 [5,6,7,8]
result nums.extend(nums1)
print(result) # None
print(nums) # [1, 2, 3, 4, 5, 6, 7, 8]
print(nums1) # [5, 6, 7, 8]
# 追加元组
nums [1,2,3,4]
nums1 (5,6,7,8)
result nums.extend(nums1)
print(result) # None
print(nums) # [1, 2, 3, 4, 5, 6, 7, 8]
print(nums1) # (5, 6, 7, 8)
# 追加字符串
nums [1,2,3,4]
nums1 abc
result nums.extend(nums1)
print(result) # None
print(nums) # [1, 2, 3, 4, a, b, c]
print(nums1) # abc
两个列表相加也是将一个列表中的值追加到另一个列表的末尾。
与extend()方法有什么区别呢
extend()的返回值为None是在原列表的基础上进行追加的
而两个列表相加返回值为一个列表对象会得到一个新列表不修改原列表。
3增加元素insert()将对象插入到列表指定的索引位置。
list.insert(index, object)
返回值为None修改了原列表
nums [1,2,3,4]
# 插入列表
result nums.insert(2, [5,6,7])
print(result) # None
print(nums) # [1, 2, [5, 6, 7], 3, 4]
# 插入一个元素a
result nums.insert(2, a) # 还可以用nums[2:2] a
print(nums) # [1, 2, a, 3, 4]
4删除元素pop()移除列表中的元素不指定索引默认删除列表中的最后一个元素指定索引删除对应索引的元素
list.pop(index) # index不填默认为0
返回值为被删除元素的值修改了原列表
nums [1,2,3,4]
# result nums.pop()
# print(result) # 4
# print(nums) # [1, 2, 3]
result nums.pop(2) # 指定删除索引为2的元素
print(result) # 3
print(nums) # [1,2,4]
5删除元素remove()用于删除列表中的第一个匹配项如果没有匹配到则会报错。
list.remove(object)
返回值为None修改了原列表
nums [1, 2, 3, 1, 4, 5, 1]
result nums.remove(1) # 删除元素1
print(result) # None
print(nums) # [2, 3, 1, 4, 5, 1]
nums.remove(6) # 报错ValueError: list.remove(x): x not in list6清空列表clear()
list.clear()
返回值为None修改了原列表
nums [1,2,3,4]
result nums.clear()
print(result) # None
print(nums) # []
7查找/统计元素count()统计某个元素在列表中出现的次数如果元素不存在返回0。可用来查找一个元素是否在列表中返回值为0表示这个元素不在列表中。
list.count(object)
返回值为元素出现的次数不改变原列表
nums [1, 2, 3, 1, 4, 5, 1]
result nums.count(1) # 统计元素1的出现次数
print(result) # 3
result1 nums.count(6) # 统计元素6的出现次数
print(result1) # 0
8查找元素index()从列表中找出某个值第一个匹配的索引位置如果匹配不到则报错。
list.index(object, startindex, endindex) # startindex表示查询范围的起始位置endindex表示查询范围的结束位置
返回值为出现元素的第一个索引值不改变原列表
nums [2, 3, 1, 4, 1, 5, 6, 1]
result nums.index(1) # 不指定查询范围查询元素1出现的位置
print(result) # 2
result1 nums.index(1, 3, 6) # 指定查询范围查询元素1出现的位置
print(result1) # 4
result2 nums.index(1, 5) # 指定查询范围只指定开始位置查询元素1出现的位置
print(result2) # 7
result3 nums.index(7) # 报错ValueError: 7 is not in list
要判断一个元素是否在列表中有三种方法
第一种使用成员运算符innot in存在返回True不存在返回False
第二种使用count()方法存在返回值不为0不存在返回值为0
第三种使用index()方法存在返回元素所在的第一个索引不存在报错
9翻转列表reverse()将列表中的元素反向存放
list.reverse(object)
返回值为None修改了原列表
nums [1,2,3,4,5]
result nums.reverse()
print(result) # None
print(nums) # [5, 4, 3, 2, 1]
还可以使用[::-1]进行翻转列表返回值是一个新列表不修改原列表
nums [1,2,3,4,5]
result nums[::-1]
print(result) # [5, 4, 3, 2, 1]
print(nums) # [1, 2, 3, 4, 5]
10排序sort()对原列表进行排序排序时列表中的元素之间必须是相同的数据类型不可混搭否则报错。
list.sort(key, reverse) # 不填写参数默认从小到大进行排序如果指定参数则使用比较函数指定的比较函数
key用于指定一个函数即key函数即为排序提供一种方法函数需要有返回值。
reverse排序规则按照升序/降序进行排序默认值为reverse False升序reverse True降序
返回值为None修改了原列表
nums [3, 5, 2, 7, 1]
result nums.sort()
print(result) # None
print(nums) # [1, 2, 3, 5, 7]
result1 nums.sort(reverseTrue)
print(nums) # [7, 5, 3, 2, 1]
参数key的使用
a [p, pyt, py, pytho, pyth, python]
a.sort(keylen) # keylen,len指的是len()这个方法表示按照列表中的元素长度进行排序默认升序
print(a) # [p, py, pyt, pyth, pytho, python]
将key与lambda匿名函数结合
a [(AZ,abc,154),(BZ,aac,144),(AB,abd,253)]
# 按照第二个元素进行升序排序
a.sort(keylambda i:i[1])
print(a) # [(BZ, aac, 144), (AZ, abc, 154), (AB, abd, 253)]
11复制copy()对列表进行复制
nums [1, 2, 3, 4]
nums_copy nums.copy()
print(nums_copy) # [1, 2, 3, 4]
print(id(nums_copy), id(nums)) # 2702229178248 2702229178696
对单层列表进行复制是完全复制的得到的是一个完全新的列表对应的是两个不同的内存地址
注意对一个复杂对象的子对象序列里面嵌套序列字典里面嵌套序列并不会完全复制。
nums [1, 2, 3, [a, b]]
nums_copy nums.copy()
print(nums_copy) # [1, 2, 3, [a, b]]
print(id(nums_copy), id(nums)) # 1883311377224 1883311376264
print(id(nums[3]), id(nums_copy[3])) # 1883311376712 1883311376712
第一层列表对应的内存地址是不同而第二层列表对应的地址是相同的所以修改nums第二层列表中的值nums_copy第二层的值会一起被修改
nums [1, 2, 3, [a, b]]
nums_copy nums.copy()
print(nums_copy) # [1, 2, 3, [a, b]]
print(id(nums_copy), id(nums)) # 1883311377224 1883311376264
print(id(nums[3]), id(nums_copy[3])) # 1883311376712 1883311376712
nums[3][1] abcd
print(nums, nums_copy) # [1, 2, 3, [a, abcd]] [1, 2, 3, [a, abcd]]
要进行完全复制需要导入copy库的deepcopydeepcopy()可以对一个复杂对象进行完全复制
nums [1, 2, 3, [a, b]]
from copy import deepcopy
nums_deepcopy deepcopy(nums)
print(nums_deepcopy) # [1, 2, 3, [a, b]]
print(id(nums), id(nums_deepcopy)) # 1759708448648 1759708449672
print(id(nums[3]), id(nums_deepcopy[3])) # 1759708449096 1759708465288
nums[3][1] abcd
print(nums, nums_deepcopy) # [1, 2, 3, [a, abcd]] [1, 2, 3, [a, b]]