- 列表是可变的,这些操作只会影响列表本身,不会生成新的列表
增
nums=["hello",'bye','good','nice']
#1.增
#1.在末尾追加元素
nums.append('world')
print(nums)#['hello','bye','good','nice','world']
#1.2在指定索引位置添加元素
#insert 注意:原来的元素向后移动
nums.insert(0,'zoom')
print(nums)#['zoom','hello','bye','good','nice','world']
删
#删除指定位置的元素
del nums[1]
print(nums)
#或者
nums.pop(1)
print(nums)
#2.2刚除最后一个元素
nums.pop()
print(nums)
#2.3别除指定元素
#这个元素如果是重复只会删除找到的第一个
#如果元素不存在报错
nums.remove('bye')
print(nums)
#2.4删除指定元素的所有重复元素
while 'bye' in nums:
nums.remove('bye')
print(nums)
#2.5清空列表
nums =['zoom','good','nice','world','bye','beautiful','bye','bye','bye','bye']
print(nums)
nums.clear() #不能这样nums=nums.clear(),这样的话nums为None
print(nums)
注意: 如果要删除所有的重复元素,如果要使用for循环
不能这样写
nums =['zoom','good','nice','world','bye','beautiful','bye','bye','bye','bye']
#使用循环遍历删除元素可不可以
for ele in nums:
print(ele)
if ele =='bye':
nums.remove('bye')
print(nums)
#当检测到第一个bye的时候,remove会将它删除同时会移动后面的元素进行补全
#['zoom','good','nice','world','beautiful','bye','bye','bye','bye']
#但是for循环看到是下标,在他这里原来bye的下标(现在的beautiful)已经被循环了
#所以就跳过了一个元素
结果:
zoom
good
nice
world
bye
bye
bye
['zoom', 'good', 'nice', 'world', 'beautiful', 'bye', 'bye']
Process finished with exit code 0
for和remove组合的错误解释
原因如下图所示,
- 因为for循环是跟着下标循环的
- remove删除元素后会自动将后面的元素向前移一位
- 这就导致了使用这种for会检测不完全
可以这样,nums[:]
相当于一个新的元素和nums一样的序列
nums =['zoom','good','nice','world','bye','beautiful','bye','bye','bye','bye']
for ele in nums[:]:
print(ele)
if ele == 'bye':
nums.remove('bye')
print(nums)
zoom
good
nice
world
bye
beautiful
bye
bye
bye
bye
['zoom', 'good', 'nice', 'world', 'beautiful']
Process finished with exit code 0
拓展
a=[12,31,19,27,12,18,39,12,12,14,12,12]
for ele in a:
a.remove(12)
print(a)
# 根据上面的情况,当我们遇到一个12的时候就会跳过一个元素,这里12有6个于其他元素相# 同,则刚好跳过6个元素,所以for循环了6次,刚好删除全部删除
# 同理,当被删除元素大于其他元素的时候,12可能就删除不干净
# 同理,但被删除元素小于其他元素的时候,会报错
改
nums =['zoom','good','nice','world','bye','beautiful','bye','bye','bye','bye']
nums[1]='hello'
print(nums)
查
#4.查
#获取指定元素第一次出现的位置
#index 如果找不到报错
pos=nums.index('bye')
print(pos)#4
#获取指定元素出现的次数
count nums.count('bye')
print(count)#5
拷贝和排序
#5.拷贝列表
#生成一个新的地址存放于原列表相同的数据
copy_list=nums.copy()
print(copy_list)
print(id(copy_1ist),id(nums))#21379899694162137989981320
#6,对列表中的元素进行排序
#默认是升序排序的
nums.sort()
print(nums)#['Good','beautiful','bye','bye','bye','bye','bye','nice','world','zoom']
#降序的话
nums.sort(reverse=True)#在升序的基础上将数据反转
sort传入函数
"""
根据函数功能的结果对列表元素进行排序
函数作用于元素的
类似filter
根据函数的功能对序列中的元素进行筛选
"""
nums =['zoom','good','nice','world','bye','beautiful','bye','bye','bye','bye']
nums.sort(key=len)#根据元素的长度对列表进行升序排序,传入一个函数,这里传的是len函数
print(nums)#['bye','bye','bye','bye','bye','zoom','nice','Good','world','beautiful']
nums.sort(key=len,reverse=True)#降序
print(nums)#['beautiful','world','zoom','nice','Good','bye','bye','bye','bye','bye']
# 按首字母大小进行排序
list_s=['abc','def','jhi']
list_s[2]=list_s[2].title() #将序列第第三个元素进行首字母大写
list_s.sort()
print(list_s) # 没有按照首字母大小进行排序,['Jhi', 'abc', 'def']
list_s.sort(key=lambda s:s.title())
print(list_s) # 按照首字母大小进行排序, ['abc', 'def', 'Jhi']
反转列表和获取最大、最小元素
#7.反转列表
nums.reverse()
print(nums)
#['bye','bye','bye','bye','bye','Good','nice','zoom','world','beautiful']
#8.获取序列中的最大的元素
max_ele=max(nums)
print(max_ele)#zoom
#9.获取序列中的最小的元素
min_ele=min(nums)
print(min_ele)