06 Python列表(list)的增删改查及嵌套

 

列表格式:list = [参数1,参数2,...,参数n]

定义一个列表:list_name = ['name','age','sex','zhansan',18,'男',{"zhan":"张三"}]

列表,可索引,可切片,可加步长 。列表可以存储大量的数据 ,列表存储什么数据类型,取出来就是什么数据类型。

代码操作:

li = ['dy',100,True,[1,2,3],{'name':'太白'},(22,33,'zh')]
# 按照索引来取值,再检测数据类型
print(li[0],type(li[0]))    #dy <class 'str'>
print(li[1],type(li[1]))    #100 <class 'int'>
print(li[2],type(li[2]))    #True <class 'bool'>
print(li[3],type(li[3]))    #[1, 2, 3] <class 'list'>
print(li[4],type(li[4]))    #{'name': '太白'} <class 'dict'>
print(li[5],type(li[5]))    #(22, 33, 'zh') <class 'tuple'>

列表的索引,切片,步长 与字符串操作一样

li = ['dy',100,True,[1,2,3],{'name':'太白'},(22,33,'zh')]
print(li[2:6:1])    #[True, [1, 2, 3], {'name': '太白'}, (22, 33, 'zh')]
print(li[:5:2]) #['dy', True, {'name': '太白'}]
print(li[-1:-4:-2]) #[(22, 33, 'zh'), [1, 2, 3]]

列表的增删改查与其他方法

列表的增加

  • append()方法进行追加
#增 append() 后面追加
lis = ['zh','en','us','sh']
lis.append('zh')
print(lis)#['zh', 'en', 'us', 'sh', 'zh']
print(lis.append('dy'))#None

案例:我用一个列表来储存用户名称,手工输入,输入“q”退出

list_name = ['张三','李四']
while 1:
    username = input("请输入姓名(输入q退出):").strip()
    if username.lower() == 'q':
        break
    else:
        list_name.append(username)
print(list_name) #['张三', '李四', '叶城', '张峰']

运行结果:

  • insert()方法安索引插入
list_index = ['123','456','789']
list_index.insert(1,[1,2,3])
print(list_index)   #['123', [1, 2, 3], '456', '789']
  • extend()方法迭代追加,如果是字符串,那么就会把字符串拆分成一个个字符,进行追加。
list_extend = ['a','b','c']
list_extend.extend('def')
print(list_extend) #['a', 'b', 'c', 'd', 'e', 'f']
list_extend.extend(['abc','efg'])
print(list_extend) #['a', 'b', 'c', 'd', 'e', 'f', 'abc', 'efg']

总结:一般来说,append()方法的性能高于insert()方法,我们在添加元素的时候可以用append()方法;如果需要追加到指定位置,那么就用insert()方法。

删除元素

  • pop()方法按照索引进行删除,有返回值,返回值就是删除的列表元素
#pop() 按照索引删除 有返回值,删除某个元素,就返回某个元素
list_pop = ['a', 'b', 'c', 'd', 'e', 'f', 'abc', 'efg']
print(list_pop.pop(0)) #a
print(list_pop)#['b', 'c', 'd', 'e', 'f', 'abc', 'efg']
  • remove()按照元素删除
list_remove = ['a', 'b', 'c', 'd', 'e', 'f', 'abc', 'efg']
list_remove.remove('abc')
print(list_remove)#['a', 'b', 'c', 'd', 'e', 'f', 'efg']
  • clear()清空列表,列表名称还是有的
list_clear = ['a', 'b', 'c', 'd', 'e', 'f', 'abc', 'efg']
list_clear.clear()
print(list_clear) #[]
  • del 列表名,表示把列表全部删掉,内存中删除,无此列表
list_del = ['a']
del list_del
print(list_del) #NameError: name 'list_del' is not defined
  • del 列表索引删除
list_del_2 = ['a', 'b', 'c', 'd', 'e', 'f', 'abc', 'efg']
del list_del_2[0]
print(list_del_2) #['b', 'c', 'd', 'e', 'f', 'abc', 'efg']
  • del 列表切片步长删除
list_del_3 = ['a', 'b', 'c', 'd', 'e', 'f', 'abc', 'efg']
del list_del_3[0:6:2]
print(list_del_3) #['b', 'd', 'f', 'abc', 'efg']

修改列表元素

  • 按索引
li = ['西施','王昭君','貂蝉','杨玉环']
li[1]  = '赵飞燕'
print(li) #['西施', '赵飞燕', '貂蝉', '杨玉环']
  • 按切片
li1 = ['西施','王昭君','貂蝉','杨玉环']
li1[:4] = '虞姬'
print(li1) #['虞', '姬'] 元素不够的就清空了

li2 = ['西施','王昭君','貂蝉','杨玉环']
li2[:4] = ['关羽','张飞','赵云','马超','黄忠','五虎将']
print(li2) #['关羽', '张飞', '赵云', '马超', '黄忠', '五虎将'] 超过修改则追加到后面
  • 按切片加步长
# 按照切片加步长 需要一一对应,不能像上面一样,否则报错
li3 = ['西施','王昭君','貂蝉','杨玉环']
li3[:3:2] = "zs"
print(li3)  #['z', '王昭君', 's', '杨玉环']

查寻列表元素

  • for循环
li_for = ['z', '王昭君', 's', '杨玉环']
for i in li_for:
     print(i )
'''
z
王昭君
s
杨玉环
'''

其它方法:

  • len():元素的个数
  • count():元素出现的个数
  • insert():元素出现的索引位置
  • sort():排序,默认从小打到 sort(reverse = True):从大到小
  • reverse():反转
li_for = ['z', '王昭君', 's', '杨玉环']
print(len(li_for)) #元素的个数 4
print(li_for.count('z')) #元素出现的个数 1
print(li_for.count('2')) #0
print(li_for.insert('s'))#元素出现的索引位置 2

list_num = [1,5,3,8,4,2,6]
list_num.sort()#排序
print(list_num) #[1, 2, 3, 4, 5, 6, 8]
list_num.sort(reverse=True) #从大到小
print(list_num)#[8, 6, 5, 4, 3, 2, 1]
list_num.reverse() #反转
print(list_num) [1, 2, 3, 4, 5, 6, 8]

 列表的嵌套

其实和Java的二维数组非常类似,主要是你需要找到列表元素的索引位置,然后根据索引位置进行增删改查,这样就容易操作了。比如 list_name = [12,25,65,[45,66,55],54] ;这个就是列表的嵌套了,列表里面有个列表。现在我需要查找list_name中的66这个元素,该如何取出?

分析:我要找到list_name里面[45,66,55]列表的66元素,那么我首先需要找到[45,66,55]这个列表在list_name的索引位置;也就是list_name[3],然后再把[45,66,55]看作列表,从里面找66,可以看到66的索引位置是1,那么我们就可以得到元素66索引位置是list_name[3][1],就可以直接取出来。

代码操作:

list_name = [12,25,65,[45,66,55],54] 
ls = list_name[3]
print(ls) # [45, 66, 55]

#这样ls就是一个新的列表了,我们再来取ls里面的66
print(ls[1]) # 66

#合并起来就是
print(list_name[3][1]) #66

 

列表嵌套的练习题:

#列表的嵌套
list_l = ['python','ding',["zha",9,"san"],25,'sh']
#1.找到python的h元素
print(list_l[0][3]) #h
#2.将ding变成大写
'''
    先找到ding
    然后在变成大写
    最后放到元素
'''
list_l2 = ['python','ding',["zha",9,"san"],25,'sh']
count =  list_l2.index("ding") #找到ding的索引位置
ding_upper = list_l2[count].upper() #根据索引位置得到ding,利用upper()变成大写
list_l2[count] = ding_upper #根据索引修改列表
print(list_l2)   #打印列表

#3.给此列表["zha",9,"san"]追加一个元素8
"""
    找到此列表
    然后增加元素
    最后放回去
"""
list_l3 = ['python','ding',["zha",9,"san"],25,'sh']
count = list_l3.index(["zha",9,"san"])
list_l3[count].append(8)
print(list_l3) #['python', 'ding', ['zha', 9, 'san', 8], 25, 'sh']

#4.将’zha'首字母大写
list_l4 = ['python','ding',["zha",9,"san"],25,'sh']
list_l4[2][0] = list_l4[2][0].capitalize()
print(list_l4) #['python', 'ding', ['Zha', 9, 'san'], 25, 'sh']

#5.将9通过数字加1变成10,并放回原处
list_l5 = ['python','ding',["zha",9,"san"],25,'sh']
list_l5[2][1] = list_l[2][1] + 1
print(list_l5) #['python', 'ding', ['zha', 10, 'san'], 25, 'sh']

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值