- 简单操作
#创建列表
sample=[1,2,3,4,5,6]
#得到列表中第一个值
print sample[0]
print sample[-1] #得到列表中最后一个值
#删除第一个值,下同
del sample[0]
del sample[-1]
#列表切片,切取索引从a到b-1的元素
sample[a:b]
sample[a:] #列表切片,切取索引从a到结束的元素
sample[:b] #列表切片,切取索引从0到b-1的元素
variable_name=sample[:] #列表复制,切取所有并赋值给一个变量
#替换列表中的值,详见下文
sample[0:0]=[7]
总结:
sample[a:b]可以用于替换,将索引号为a~b-1的元素,替换为等号之后的[]内的值,可以把原来的许多个替换成一个,也可以把原来的一个替换成许多个,
此外,当b=a时,[a:b]在原来的列表里找不到对应的元素,也就是一个都不去掉,只新增,所以就变成了插入元素,[a:a]和[a:]没有区别。
#输出列表长度
print(len(sample))
#输出排序后的列表,且不影响原有的列表顺序
print(sorted(sample))
print "below is the new list",sample
#遍历
for element in sample:
print (element)
#列表倒置
list_name[::-1]
#此外,对于纯数字的列表,可以进行简单的统计计算
digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>>
min(digits)
0
>>>
max(digits)
9
>>>
sum(digits)
45
- 列表的方法
-
- 新增元素
-
- list_name.append(obj) #在列表末尾添加新的元素
-
-
- list_name.insert(a,obj) #在索引为a的地方插入元素obj(a之后的元素后移一位)
-
-
- 删除元素
-
- list_name.pop() #不需要参数,切掉列表末尾的元素
#注意,pop和del的区别在于,pop是列表的一个方法,它的运算结果可以作为一个值赋给一个变量,因此,pop切掉的值还可以赋给变量继续引用,如下例:
-
-
- list_name.remove(obj) #移除,与del的区别是不指定位置,而是指定元素的值——如果有重复值,就删除第一个(要全删了可以循环remove直到list_name.remove(obj)的返回值为空)
-
#小难点:怎么全部删掉?
#4-10行的语法看似没问题,但结果却错了,这是因为随着循环的执行,列表越来越短了,遍历次数就会下降,导致remove的次数下降,所以需要结合count函数来做while循环
-
- list_name.sort() #永久性排序,有两个参数,会直接改变原有列表顺序
-
- key:排序关键字 key=int,key=len, key=lambda...
- reverse:倒序(reverse=True)
- 列表解析:简化列表的创建——将for循环和创建新元素的代码合并成一行,并自动附加新元素
解析语法: list_name=[ 算式 for value in range()]
- map函数:用列表给一个函数批量传入参数
map (func_name, arglist1,arglist2,....)——依次将arglist中的元素传递给第一个参数给出的函数,运行结果取决与函数return的是什么
-
- func_name:函数名,后面不用加括号
- arglist1:参数列表1
- arglist2:参数列表2
注意,map本身是不返回任何值的,它只是一个调用函数的命令
- 查找列表:返回元素位置 list.index(value)
- 元素计数:list.count(value)
- 列表过滤:filter(function, list)——对list中每一个元素,执行函数function,返回true时保留该元素,返回false时将该元素从列表中删除(所以这个函数的精髓在于根据我们的需要构建一个过滤函数function,这个函数只能返回true or flase。
当function为none时,默认为indentity函数
identity(n)函数是返回一个n维的单位矩阵的意思,所以只有当n为空值,0,或者不是数字的时候会返回错误值false
因此,filter(None,list)可以用来过滤掉空值,0,不是数字的元素,尤其是过滤0和空值,在很多实际问题中都很有用