1、列表的组成
列表是由一系列按照特定顺序排列的元素组成的有序集合,在Python中,列表需要用'[]'括起来表示,列表中各元素之间需要用','隔开。
作为有序集合,列表在访问的时候,只要知道所需访问元素的位置或索引,就可以直接访问,如下所示:
names = ['zhangsan','lisi','zhouwu','zhengwang'] print(names[0])
输出结果如下所示:
zhangsan
此时需要注意的是,Python上文索引跟其他编程语言一样,都是从0开始进行计数的,因此在数组中,第一位元素的索引应当是0,第二位是1;若从后往前访问元素,则从-1开始表示倒数第一位元素。无论正序访问还是倒序访问,索引都会根据你所访问的位数以此类推,如下例所示:
names = ['zhangsan','lisi','zhouwu','zhengwang'] ny_name = 'My name is ' + names[0].title() + ',what`s you name?' you_name = 'My name is ' + names[-1].title() print(ny_name) print(you_name)
上例对同样一个列表,进行了正序倒序两种不同的元素访问,此外还根据情况,引用首字母大写的方式获取了姓名,并且进行了拼接,因此输出答案如下所示:
My name is Zhangsan,what`s you name? My name is Zhengwang
2、修改、添加和删除列表中的元素
列表通常都是以动态的方式存在,这是因为列表内的元素常常会因为程序在不同阶段的运行结果不同,而对列表内的元素进行有目的的增删改操作。
2-1修改列表中的元素
在Python中,对于列表中元素的修改,通常有两种方式,一种是获取元素的位置,通过直接赋值来修改,如下所示:
names = ['zhangsan','lisi','zhouwu','zhengwang'] print(names) names[3] = 'zhangxueyou' print(names)
在上例中,列表'names'中第3位元素被修改为'zhangxueyou',现将修改前和修改后的列表分别打印输出后,可以看出修改的结果,如下所示:
['zhangsan', 'lisi', 'zhouwu', 'zhengwang'] ['zhangsan', 'lisi', 'zhouwu', 'zhangxueyou']
另一种方法则是引用函数进行修改,常用函数有两个,分别为'append()'方法和'insert()'方法
'append()':在列表末尾添加元素
insert()':根据指定的索引值,在列表任意位置添加元素
其中'append()'方法对动态的列表创建尤为有用,如下例所示:
names = ['zhangsan','lisi','zhouwu','zhengwang'] print(names) names.append('fengchen') print(names)
分别将添加元素前和添加元素后的列表打印出来,输出结果如下所示:
['zhangsan', 'lisi', 'zhouwu', 'zhengwang'] ['zhangsan', 'lisi', 'zhouwu', 'zhengwang', 'fengchen']
此时可以看到新增元素'fengchen'放在了最后一位。
另一个添加元素的函数是'insert()',该函数可以通过指定索引和值来添加元素,示例如下:
names = ['zhangsan','lisi','zhouwu','zhengwang'] print(names) names.insert(2,'fengchen') print(names)
上例中,通过'insert()'函数,指定在列表'names'中添加索引为2,值为'fengchen'的元素,输出结果如下所示:
['zhangsan', 'lisi', 'zhouwu', 'zhengwang'] ['zhangsan', 'lisi', 'fengchen', 'zhouwu', 'zhengwang']
2-2、删除元素
删除元素的函数有三个,分别为'del','remove()','pop()',其中
'del':根据元素索引值直接删除元素
'remove()':根据元素的只来删除元素
'pop()':将列表中任意位置的元素取出存入栈中,类似于剪切
使用'del'的前提是知道元素在列表中的索引位置,通过指定位置来删除元素,如下所示:
names = ['zhangsan','lisi','zhouwu','zhengwang'] print(names) del names[0] print(names)
通过打印删除前后的列表,查看删除效果,输出如下:
['zhangsan', 'lisi', 'zhouwu', 'zhengwang'] ['lisi', 'zhouwu', 'zhengwang']
当删除的元素仍然需要的时候,可以使用'pop()'方法进行删除,类似于剪切功能,使用方式通常为将原、列表中需要取出的元素拿出来,放在新的列表中,这样既在原列表中删除了该元素,又在新的列表中添加原该元素,如下所示:
names = ['zhangsan','lisi','zhouwu','zhengwang'] print(names) new_names = names.pop(0) print(names) print(new_names)
在执行'pop()'操作之前,列表中有四个元素,当执行'pop()'操作之后,原列表中索引值为0的元素将被取出,存放进新的列表'new_names'中,作为新列表中的元素存在,如下图所示:
['zhangsan', 'lisi', 'zhouwu', 'zhengwang'] ['lisi', 'zhouwu', 'zhengwang'] zhangsan
需注意,当使用'pop()'方法时,如果括号内未指定索引,则默认从原列表最后一位元素开始取。
最后一种删除元素的方式是'remove()'函数,该函数可以根据元素值,直接进行删除操作,如下所示:
names = ['zhangsan','lisi','zhouwu','zhengwang'] print(names) names.remove('lisi') print(names)
引用函数'remove()',指定元素'lisi',对列表'names'进行删除操作,输出结果如下:
['zhangsan', 'lisi', 'zhouwu', 'zhengwang'] ['zhangsan', 'zhouwu', 'zhengwang']
此时元lisi'在列表names'中,被删除。
3、组织排列
在列表中,元素的顺序常常是无法预测的,因此某些时候需要对列表里的元素进行排列。在Python中,对元素的排列有两种方法,分别为'sort()','sorted()'
'sort()':对列表进行永久性的排序,即执行以后,列表中的元素顺序发生改变,若需要倒序,可设定传递参数'reverse = True'的方式进行倒叙排列,如下例所示:
names = ['zhangsan','lisi','zhouwu','zhengwang'] print(names) names.sort() print(names) names.sort(reverse = True) print(names)
print(names)
此时列表中元素的排列顺序已经发生改变,输出结果如下所示:
['zhangsan', 'lisi', 'zhouwu', 'zhengwang'] ['lisi', 'zhangsan', 'zhengwang', 'zhouwu'] ['zhouwu', 'zhengwang', 'zhangsan', 'lisi'] ['zhouwu', 'zhengwang', 'zhangsan', 'lisi']
'sorted()':对列表进行临时性的排序,即执行以后只在输出结果显示排序后的元素,列表本身的元素顺序不改变,同样可使用设定传递参数'reverse = True'的方式进行倒叙排列,如下所示:
names = ['zhangsan','lisi','zhouwu','zhengwang'] print(names) print(sorted(names)) print(sorted(names,reverse = True)) print(names)
需注意'sorted()'进行倒序排列时,需要在列表后添加',reverse = ,执行完后,结果如下:
['zhangsan', 'lisi', 'zhouwu', 'zhengwang'] ['lisi', 'zhangsan', 'zhengwang', 'zhouwu'] ['zhouwu', 'zhengwang', 'zhangsan', 'lisi'] ['zhangsan', 'lisi', 'zhouwu', 'zhengwang']
查询原列表中的元素顺序,发现原列表中的元素顺序并未改变.
使用函数reverse(),可以将原列表的所有元素的顺序翻转过来,但这本身不能算是排序,只是顺序的完全颠倒,如下所示:
names = ['zhangsan','lisi','zhouwu','zhengwang'] print(names) names.reverse() print(names)
此时列表中的元素已经完全反转,执行结果如下所示:
['zhangsan', 'lisi', 'zhouwu', 'zhengwang'] ['zhengwang', 'zhouwu', 'lisi', 'zhangsan']
确定列表长度的函数为'len()',可以直接获取类表中元素的个数,如下所示
names = ['zhangsan','lisi','zhouwu','zhengwang'] print("列表长度为:" + str(len(names)))
输出结果如下:
列表长度为:4