今天是2020年2月12日,阴转多云,9~15℃
有一点厌学,但还是打开了博客,想逼自己学点东西。
列表由一系列按特定顺序排序的元素组成,是线性表的一种表示。不同于其它语言中的数组,Python在同一列表中可以储存不同类型的元素,类型既可以是Python标准数据类型,也可以是自定义类型。
在Python中,使用方括号( [] )来表示列表,并用逗号来分割其中的元素。例如一个简单列表:
list1 = [1,2.0,"3",[4]]
访问列表元素的操作和其它语言中的数组使用方法类似,使用索引( [index] )就可以访问对应元素。
print(list1[2]) #Output:3
索引从0开始,这与许多其它语言相同。
此外,Python允许用户使用负索引来访问倒数元素。
print(list1[-1]) #Output:[4]
-index表示倒数第index个元素。
使用 [index1:index2] 可以访问该列表的子列表。
list2 = list1[0:2]
print(list2) #Output:[1, 2.0]
子列表中的元素为原列表索引从 index1 到 index2 - 1 的元素。
Python为列表提供了很多简单快捷的操作方式,下面是一些简单的操作:
要修改列表元素,可指定列表名和索引,并赋予元素新值。
names = ["Alex","Blair","Chris"] #本部分均以该列表为初始列表进行操作演示
names[1] = "Black"
print(names) #Output:['Alex', 'Black', 'Chris']
Python列表提供了两个添加元素的方法。
使用append方法可将元素加入列表末尾。
#list_name.append(object)
names.append("Dock")
print(names) #Output:['Alex', 'Blair', 'Chris', 'Dock']
使用insert方法可将元素插入列表的任何位置。
#list_name.insert(index , object)
names.insert(2,"Dock")
print(names) #Output:['Alex', 'Blair', 'Dock', 'Chris']
insert方法将把元素插入列表的index位置,再将后面的元素右移。
Python列表提供了两个方法和一个关键字用于删除元素。
使用del关键字可删除已知位置的元素。
#del list_name[index]
del names[1]
print(names) #Output:['Alex', 'Chris']
将列表看作一个栈,使用pop方法可将末尾元素弹出列表。
#list_name.pop()
names.pop()
print(names) #Output:['Alex', 'Blair']
pop方法具有重载方法,需要提供一个索引参数,可将任意已知索引的元素弹出列表。
#list_name.pop(index)
names.pop(0)
print(names) #Output:['Blair', 'Chris']
除了能将元素弹出列表,达到与del关键字相同的效果,pop方法还具有一个返回值,返回被弹出的元素值。
name = names.pop()
print(name) #Output:Chris
当不知道想要删除的元素索引,但知道元素的值时,可以通过remove方法删除元素。
#list_name.remove(value)
names.remove("Alex")
print(names) #Output:['Blair', 'Chris']
如果通过变量删除元素,还可在元素从列表中被删除后再通过变量使用元素。
name = "Alex"
names.remove(name)
print(name) #Output:Alex
remove方法只能删除第一个值匹配的元素。
列表中的元素若不经过排序,顺序通常是无法预测的。有时我们需要初始顺序,但有时有希望列表按特定顺序排列。Python提供了几种对列表进行排序的方式。
sort方法可以对列表进行排序,但这一过程是永久的,一旦进行可能就无法回到初始状态。
sort方法有两个可缺省的参数key和reverse。key参数需要一个用于排序的元素;reverse参数需要一个布尔值以决定升降序排序。
#list_name.sort(key = sort_key , reverse = bool_value)
names = ["Harry","Bulk","Jack","Parker","Michael"] #排序中均使用该列表作为初始列表
names.sort() #无参时默认参数为(key = none , reverse = False) 根据字符串大小升序
print(names) #Output:['Bulk', 'Harry', 'Jack', 'Michael', 'Parker']
names.sort(reverse = True) #省略参数key时key = none 根据字符串大小降序
print(names) #Output:['Parker', 'Michael', 'Jack', 'Harry', 'Bulk']
names.sort(key = len) #省略参数reverse时reverse = False 根据字符串长度升序
print(names) #Output:['Jack', 'Bulk', 'Harry', 'Parker', 'Michael']
字符串大小比较和C中strcmp函数和C++中字符串’ < '运算符重载相同,均逐位比较字符的ASCII码,中文比较Unicode码。
由第三个输出可以发现,当字符串长度相同时,保持原有顺序。
sort方法还有一个参数cmp,用于指定比较的方式。
sorted方法将返回一个排序后的列表,但不改变列表原有的排序。
#sorted(list_name)
print(sorted(names)) #Output:['Bulk', 'Harry', 'Jack', 'Michael', 'Parker']
print(names) #Output:['Harry', 'Bulk', 'Jack', 'Parker', 'Michael']
排序后的列表也可保存在其它变量中。
sorted函数同sort方法一样有cmp , key , reverse三个缺省参数。
reverse方法可以将列表反置(反转),即按原有顺序从尾到头排序。
#list_name.reverse()
names.reverse()
print(names) #Output:['Michael', 'Parker', 'Jack', 'Bulk', 'Harry']
len函数能获取并返回列表的长度(元素个数)。此外,len函数还可用于其它数据类型,如字符串。
#len(object)
print(len(names)) #Output:5
正直的人遵守着正直的法则,却没有人与他一起遵守,这就只能给恶人带来好处,让正直的人遭遇不幸。