一、对列表增删改查

1、向列表增加元素

共有4种办法:

  • append(),在列表的末尾 增加 一个 元素
#append(),给列表末尾增加一个元素
lst = [0,1,2,3,4,5,6]
lst.append('ok')
print(lst)
>>> [o,1,2,3,4,5,6,'ok']
  • extend(), 在列表的末尾插入至少一个元素
#extend(),在元素末尾插入至少一个元素
lst1 = [0,1,2,3,4,5]
lst2 = ['ni', 'hao']
lst1.extend(lst2)
print(lst1) #将列表lst2看成一个元素,插入到列表lst1后面
>>> [o,1,2,3,4,5,'ni','hao']
  • insert(), 给列表中任意位置插入一个元素
lst1.insert(2,10)
print(lst1) #给索引值为2的位置上增加一个值,10
>>> [o,1,10,2,3,4,5,'ni','hao']
  • 切片,在列表的任意位置添加至少1个位置
#切片
lst3 = [0,1,2,3,4,5,6,7,8,9]
lst4 = ['hello', 'world']
lst3 [3: ] = lst4
print(lst3) #从lst3索引值为3的位置开始切片,代入lst4的内容,lst索引值为3的后面索引的值就不要了
>>> [0,1,2,'hello', 'world']

这里需要注意,切片添加值的同时,切片位置之后的原列表的值全部丢弃

2、删除列表元素

  • remove():
    一次只移除1个元素;
    若有重复元素,则移除第一个;
    元素不存在的话,就会报错
#remove(),从列表每次只移出1个元素;
#若有重复元素,移除的是第一个;如果元素不存在则会报错
lst = [0,1,2,3,4,5,6,6]
lst.remove(6)
print(lst)
>>> [o,1,2,3,4,5,6]
  • pop(), 删除的是对应索引值处的元素
#pop(),删除列表索引处的值
lst = [0,1,2,3,4,5,6,6]
lst.pop(5) #删除索引=5的值
print(lst)
>>>[o,1,2,3,4,6,6]
lst.pop() #没指定索引值,默认删除列表最后一个元素
print(lst)
>>>[o,1,2,3,4,6]
lst.pop(9) #索引值不存在,会报错
print(lst)
>>>error
  • 切片,切除至少1个元素,但是会产生一个新的列表对象
lst = [0,1,2,3,4,5,6,6]
new_lst = lst[1:5]
print('新列表',new_lst)
>>>[1,2,3,4]
  • clear(), 删除列表中的所有元素
#clear清除列表中所有元素
lst = [0,1,2,3,4,5,6,6]
lst.clear()
print(lst)
>>>[]
  • del lst,直接删除整个列表,该列表就不存在了

3.列表的修改

  • 在指定索引值处修改元素
#修改指定索引值的元素、或者修改指定切片内的值
lst = [10,20,30,40,50]
lst[3] = 100
print(lst)
"""将索引值=3的值修改为100"""
>>>[10,20,30,100,50]
  • 在指定切片区域更改元素
lst = [10,20,30,40,50]
lst[1:3] = [111]
print(lst)
"""切片范围内的值进行修改"""
>>>[10,111,100,50]

4、列表元素查询

-输入元素的 索引值 查询
(1)单个索引值查询单个元素

"""(1)获取列表中的单个元素(给定了索引,去找对应元素)"""
lst2 = [0, 1, 2, 3, 4, 5]
#正向索引从0开始到N; 反向索引从-N开始到-1; 如果没有对应索引值,输出error
print( lst2[5])
>>>5
print( lst2[-3])
>>>3
#print (lst2[10])  #没有该索引值,超出列表范围,报错

(2)切片范围,查询多个元素

"""(2)获取多个元素,不用索引,用 “切片” 操作"""
#切片的结果是原列表的部分拷贝,格式是( start, stop, end)
lst3 = [10, 20, 30, 40,50, 60]
print(lst3[1:3]) #没有指定step,默认步长为1
print(lst3 [ : 3:]) #没有指定start或者stop,就默认从端点起始或结束
print( lst3[1: :])
print( lst3[5:1]) #start= 5,stop=1,说明是负索引方向,但是默认step=1,是正索引方向,二者矛盾,切片值为空
print( lst3[5: :-1])#start=5,step=-1,负索引方向,终点默认是端点处,即stop=0
>>>[20,30]
>>>[10,20,30]
>>>[20,30,40,50,60]
>>>[]
>>>[60,50,40,30,20,10]

二、对列表元素的排序操作

两种方式,区别在于是否影响排序前,列表内元素的原本顺序

1、在原列表元素的基础上排序,排完后原列表的元素顺序不变

调用的是sort()方法,默认按照 从小到大 的顺序将列表中的元素排列起来。也可以使用reverse = Ture,使用降序方法排列元素

"""lst = [10, 129,49, 28, 200,11]
lst.sort()
print(lst)
>>>[10,11,28,49,129,200]
lst.sort( reverse= True)
print(lst)
>>>[200,129,49,28,11,10]
lst.sort( reverse= False)
print(lst)
>>>[10,11,28,49,129,200]

Tips:
reverse = True时,可以设置为降序排列,那设置成False时,对应的就是升序

2、不改变原列表的元素排列顺序

调用内置函数sorted(),设置关键字reverse = Ture进行降序排列,原列表元素顺序不变

a = [10,28,12,98,33,2]
b = sorted(a)
print(b)
print(a)  #可以看到,b是a按升序排列的,并且a的原本顺序不变
c = sorted(a ,reverse=True)
print(c) #c是通过设置了reverse= Ture,将a的元素按照降序排列

一定注意: sorted()方法中设置reverse时的书写格式

三、生成列表的公式

[ x for x in range() ]

其中,x是列表元素的表达式,在range范围里选取对象,举例如下:

"""格式: [i for i in range()]
i,表示列表元素的表达式  """
a = [i for i in range(1,11)]
b = [i*i for i in range(1,11)]
c = [i*3 for i in range(1,11)]
print(a)
>>>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(b)
>>>[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
print(c)
>>>[3, 6, 9, 12, 15, 18, 21, 24, 27, 30]