本文主要讨论python中列表的性质和列表的一些内置方法。
一.列表的定义和性质
1.列表的定义:
列表是python中的内置内的一种,在python中的类的关键字是list.列表的定义如下:
li=[12.‘hello‘,344,[12,23,‘hshs‘]]
列表是由[]标志的。列表中的元素用“,”分隔开.列表的元素可以是数字,字符串,元组,字典。
2.列表的性质
(1)列表可以通过索引查找元素
li=[1,2,3,4] s=li[3] print[s]
列表的索引从0开始,最后一个元素的索引是列表的长度-1.
(2)列表可以通过for和while循环遍历
1 li=[1,2,45,45] 2 s=len(li) 3 i=0 4 for item in li: 5 print(item) 6 while i<s: 7 print(li[i]) 8 i=i+1
列表是有序的,因此可以由while循环遍历(字典是无序的,因此不能用while循环遍历)。当然,for循环遍历也是支持的。
(3)列表中的元素可以是基本数据,即数据,字符串,列表,字典,元组。
(4)列表可以进行切片操作
1 li=[12,34,56,67,89] 2 li1=li[2:4] 3 print(li1)
列表可以通过切片取出列表中的元素,切片的索引范围是左闭右开。除了可以查询之外,也可以通过列表切片修改列表元素
(5)列表的元素允许修改
1 li=[23,45,67,90] 2 li[2]=100 3 print(li) 4 li[0:3]=[11,21,23] 5 print(li)
列表的元素可以修改,既可以通过索引修改,也可以通过切片修改
(6)列表中的元素允许删除
列表中的元素,可以通过del li[i]删除,也可以通过listl类提供的方法删除。方法会在后面讨论,此处只说del的删除方式。
1 li=[45,67,90,‘defde‘,True,‘huebfur‘] 2 del li[0] 3 print(li) 4 del li[0:3] 5 print(li)
del既可以针对索引删除,也可以针对切片删除。
(7)列表与字符串之间的转换
列表与字符串可以相互转换。字符串转列表相对比较简单,可以直接转换:
s=‘hello‘ s1=list(s) print(s1)
将字符串转为列表,则字符串中的每一个字符变成列表中的一个元素。
列表转字符串就不能直接转了,因为如果直接转会将列表的"[]"标志符也作为字符串的一部分。列表转字符串,我们只能自己写一个函数来转化:
1 li=[123,‘sre‘,567,True,‘defe‘] 2 s=‘‘ 3 for iltm in li: 4 s=s+str(iltm) 5 print(s)
如果列表中的元素只有字符串,则可以通过join函数来将列表转为字符串:
1 li=[‘hello‘,‘dhuewu‘,‘cbureuvr‘] 2 s=‘‘.join(li) 3 print(s)
(8)补充:字符串一旦创建后,不可再修改
字符串在python中是一个常量(在其他语言中也是这样),所以一旦字符串被创建,就不可再修改,如果要修改字符串,相当于是对该字符串做了一份复制,因此修改后的字符串需要另外一个变量来接收,修改操作对原字符串是无效的,而列表的修改操作则是针对原列表操作,因此无需另外一个变量来接收。
1 s=‘helloworld‘ #原字符串 2 s1=s.upper()#将字符串变为大写 3 print(s1) 4 print(s)
代码执行效果:
下面是在列表末尾新增一个元素:
1 li=[1,2,3,4,5,6] 2 li1=li.append(9) 3 print(li) 4 print(li1)
这是他的执行结果:
由上可以看出,对列表的所有操作都是直接针对原始列表进行的。新的变量接收的值是根据方法的返回值来定的。
3.列表类的方法
(1)append(value):
append函数在列表的末尾添加一个元素
(2)clear():
清空列表
(3)copy():
复制列表(浅拷贝)
(4)count(value):
计算value在列表中出现的次数。
(5)extend(iterable):
该函数传入参数一个可迭代对象(可以用for循环的便是一个可迭代对象),然后把可迭代对象里面的元素加入列表末尾。需要注意该方法与append方法的区别,如果append函数传入一个可迭代对象,那么会把这个可迭代对象作为一个整体元素加入列表,而extend是把可迭代对象的每一个元素分别加入列表:
1 li=[1,2,3] 2 li1=li.copy() 3 li.append(‘hello‘) 4 li1.extend(‘hello‘) 5 print(li) 6 print(li1)
下面是执行结果:
(6)index(value,strat=None,end=None):
该方法判断列表中查找元素第一次出现的索引(从左往右),该方法有两个缺省参数,可以指定查找的范围。若列表中不存在该值,会报错
(7)insert(index,value):
在列表指定的位置插入新的值
(8)pop(index=None):
删除列表中的元素。默认是删除列表的最后一个元素。该方法有一个缺省参数可以用来指定删除的位置。
(9)remove(value):
删除列表中第一次出现的value值(从左向右)。
(10)reverse():
将列表翻转。即第一个元素变为倒数第一个元素,第二个元素变为倒数第二个元素...
(11)sort(key=None,reverse=False):
将列表元素排序,默认是按照升序,如果是降序,则将reverse设置为true,key值后续部门再讨论,此处略过。