Python3学习笔记之列表方法示例详解
前言
本文主要给大家介绍了关于Python3列表方法的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
1使用[]或者list()创建列表
user=[] user=list()
2使用list()可以将其他类型转换成列表
#将字符串转成列表 >>>list('abcde') ['a','b','c','d','e'] #将元祖转成列表 >>>list(('a','b','c')) ['a','b','c']
3使用[offset]获取元素或修改元素
>>>users=['a','b','c','d','e'] #可以使用整数来获取某个元素 >>>users[0] 'a' #可以使用负整数来表示从尾部获取某个元素 >>>users[-1] 'e' #数组越界会报错 >>>users[100] Traceback(mostrecentcalllast): File"",line1,in IndexError:listindexoutofrange >>>users[-100] Traceback(mostrecentcalllast): File" ",line1,in IndexError:listindexoutofrange #修改某个元素 >>>users[0]='wdd' >>>users ['wdd','b','c','d','e'] >>>
4列表切片与提取元素
列表的切片或者提取之后仍然是一个列表
形式如:list[start:end:step]
>>>users ['wdd','b','c','d','e'] #正常截取注意这里并不会截取到users[2] >>>users[0:2] ['wdd','b'] #也可从尾部截取 >>>users[0:-2] ['wdd','b','c'] #这样可以获取所有的元素 >>>users[:] ['wdd','b','c','d','e'] #也可以加上步长参数 >>>users[0:4:2] ['wdd','c'] #也可以通过这种方式去将列表取反 >>>users[::-1] ['e','d','c','b','wdd'] #注意切片时,偏移量可以越界,越界之后不会报错,仍然按照界限来处理例如开始偏移量如果小于0,那么仍然会按照0去计算。 >>>users ['wdd','b','c','d','e'] >>>users[-100:3] ['wdd','b','c'] >>>users[-100:100] ['wdd','b','c','d','e'] >>>
5使用append()添加元素至尾部
形式如:list.append(item)
>>>users ['wdd','b','c','d','e'] >>>users.append('ddw') >>>users ['wdd','b','c','d','e','ddw']
6使用extend()或+=合并列表
形式如:list1.extend(list2)
这两个方法都会直接修改原列表
>>>users ['wdd','b','c','d','e','ddw'] >>>names ['heihei','haha'] >>>users.extend(names) >>>users ['wdd','b','c','d','e','ddw','heihei','haha'] >>>users+=names >>>users ['wdd','b','c','d','e','ddw','heihei','haha','heihei','haha']
7使用insert()在指定位置插入元素
形式如:list.insert(offset,item)
insert也不存在越界的问题,偏移量正负都行,越界之后会自动伸缩到界限之内,并不会报错
>>>users ['wdd','b','c','d','e','ddw','heihei','haha','heihei','haha'] >>>users.insert(0,'xiaoxiao') >>>users ['xiaoxiao','wdd','b','c','d','e','ddw','heihei','haha','heihei','haha'] >>>users.insert(-1,'-xiaoxiao') >>>users ['xiaoxiao','wdd','b','c','d','e','ddw','heihei','haha','heihei','-xiaoxiao','haha'] #下面-100肯定越界了 >>>users.insert(-100,'-xiaoxiao') >>>users ['-xiaoxiao','xiaoxiao','wdd','b','c','d','e','ddw','heihei','haha','heihei','-xiaoxiao','haha'] #下面100也是越界了 >>>users.insert(100,'-xiaoxiao') >>>users ['-xiaoxiao','xiaoxiao','wdd','b','c','d','e','ddw','heihei','haha','heihei','-xiaoxiao','haha','-xiaoxiao']
8使用del删除某个元素
形式如:dellist[offset]
del是python的语句,而不是列表的方法,del删除不存在的元素时,也会提示越界
>>>users ['-xiaoxiao','xiaoxiao','wdd','b','c','d','e','ddw','heihei','haha','heihei','-xiaoxiao','haha','-xiaoxiao'] >>>delusers[0] >>>users ['xiaoxiao','wdd','b','c','d','e','ddw','heihei','haha','heihei','-xiaoxiao','haha','-xiaoxiao'] >>>delusers[100] Traceback(mostrecentcalllast): File"",line1,in IndexError:listassignmentindexoutofrange >>>delusers[-100] Traceback(mostrecentcalllast): File" ",line1,in IndexError:listassignmentindexoutofrange
9使用remove删除具有指定值的元素
形式如:list.remove(value)
>>>users ['xiaoxiao','wdd','b','c','d','e','ddw','heihei','haha','heihei','-xiaoxiao','haha','-xiaoxiao'] #删除指定值'c' >>>users.remove('c') >>>users ['xiaoxiao','wdd','b','d','e','ddw','heihei','haha','heihei','-xiaoxiao','haha','-xiaoxiao'] #删除不存在的值会报错 >>>users.remove('alsdkfjalsdf') Traceback(mostrecentcalllast): File"",line1,in ValueError:list.remove(x):xnotinlist #如果该值存在多个,那么只能删除到第一个 >>>users.remove('haha') >>>users ['xiaoxiao','wdd','b','d','e','ddw','heihei','heihei','-xiaoxiao','haha','-xiaoxiao']
10使用pop()方式返回某个元素后,并在数组里删除它
形式如:list.pop(offset=-1)偏移量默认等于-1,也就是删除最后的元素
>>>users ['xiaoxiao','wdd','b','d','e','ddw','heihei','heihei','-xiaoxiao','haha','-xiaoxiao'] #删除最后的元素 >>>users.pop() '-xiaoxiao' >>>users ['xiaoxiao','wdd','b','d','e','ddw','heihei','heihei','-xiaoxiao','haha'] #如果列表本身就是空的,那么pop时会报错 >>>user.pop(0) Traceback(mostrecentcalllast): File"",line1,in IndexError:popfromemptylist >>>users.pop(0) 'xiaoxiao' >>>users ['wdd','b','d','e','ddw','heihei','heihei','-xiaoxiao','haha'] #越界时也会报错 >>>users.pop(100) Traceback(mostrecentcalllast): File" ",line1,in IndexError:popindexoutofrange
11使用index()查询具有特定值的元素位置
形式如:list.index(value)
#index只会返回第一遇到该值得位置 >>>users ['wdd','b','d','e','ddw','heihei','heihei','-xiaoxiao','haha'] >>>users.index('heihei') 5 #如果该值不存在,也会报错 >>>users.index('laksdf') Traceback(mostrecentcalllast): File"",line1,in ValueError:'laksdf'isnotinlist
12使用in判断值是否存在列表
形式如:valueinlist
>>>users ['wdd','b','d','e','ddw','heihei','heihei','-xiaoxiao','haha'] >>>'wdd'inusers True
13使用count()记录特定值出现的次数
形式如:list.count(value)
>>>users ['wdd','b','d','e','ddw','heihei','heihei','-xiaoxiao','haha'] >>>users.count('heihei') 2 >>>users.count('h') 0
14使用join()将列表转为字符串
形式如:string.join(list)
>>>users ['wdd','b','d','e','ddw','heihei','heihei','-xiaoxiao','haha'] >>>','.join(users) 'wdd,b,d,e,ddw,heihei,heihei,-xiaoxiao,haha' >>>user [] >>>','.join(user) ''
15使用sort()重新排列列表元素
形式如:list.sort()
>>>users ['wdd','b','d','e','ddw','heihei','heihei','-xiaoxiao','haha'] #默认是升序排序 >>>users.sort() >>>users ['-xiaoxiao','b','d','ddw','e','haha','heihei','heihei','wdd'] #加入reverse=True,可以降序排序 >>>users.sort(reverse=True) >>>users ['wdd','heihei','heihei','haha','e','ddw','d','b','-xiaoxiao'] #通过匿名函数,传入函数进行自定义排序 >>>students [{'name':'wdd','age':343},{'name':'ddw','age':43},{'name':'jik','age':90}] >>>students.sort(key=lambdaitem:item['age']) >>>students [{'name':'ddw','age':43},{'name':'jik','age':90},{'name':'wdd','age':343}] >>>students.sort(key=lambdaitem:item['age'],reverse=True) >>>students [{'name':'wdd','age':343},{'name':'jik','age':90},{'name':'ddw','age':43}] >>>
16使用reverse()将列表翻转
形式如:list.reverse()
>>>users ['wdd','heihei','heihei','haha','e','ddw','d','b','-xiaoxiao'] >>>users.reverse() >>>users ['-xiaoxiao','b','d','ddw','e','haha','heihei','heihei','wdd']
17使用copy()复制列表
形式如:list2=list1.copy()
list2=list1这种并不是列表的复制,只是给列表起了别名。实际上还是指向同一个值。
>>>users ['-xiaoxiao','b','d','ddw','e','haha','heihei','heihei','wdd'] >>>users2=users.copy() >>>users2 ['-xiaoxiao','b','d','ddw','e','haha','heihei','heihei','wdd'] >>>
18使用clear()清空列表
形式如:list.clear()
>>>users2 ['-xiaoxiao','b','d','ddw','e','haha','heihei','heihei','wdd'] >>>users2.clear() >>>users2 []
19使用len()获取列表长度
形式如:len(list)
>>>users ['-xiaoxiao','b','d','ddw','e','haha','heihei','heihei','wdd'] >>>len(users) 9
20关于列表越界的深入思考
写了这些方法后,我有一些疑问,为什么有些操作会提示越界,有些则不会呢?
会提示偏移量越界的操作有
- list[offset]读取或者修改某个元素
- dellist[offset]删除指定位置的元素
- list.remove(value)删除指定值的元素
- list.pop(offset)删除指定位置的元素
如果偏移量越界,这些方法会报错的。我的个人理解是:
假如我想读取偏移量为10的元素,但是该元素并不存在,如果系统自动给你读取了列表的最后一个元素,而且不报错,这是无法容忍的bug。如果我想删除第10个元素,但是第10个元素并不存在,而系统帮你删除了列表的最后一个元素,我觉得这也是无法容忍的。
所以在使用这些方法时,务必确认该偏移量的元素是否存,否则可能会报错。
总结
以上就是这篇文章的全部内容,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。