列表是最基本的python储存方式之一,通过列表可以存储不同类型的内容,如字符串,数字,列表,字典等均可作为列表的元素值
列表是以一对方括号 [ ] 包含起来的,与元组和字典不同,通过列表的下标索引可以获取列表内的元素值。
------还是先照例先给一些list的相关函数以供查阅(表格来自《python程序设计》(董付国))-----
在列表尾部添加一个元素 | list.append(x) |
输入列表L,将其元素接到列表后部 | list.extend(L) |
在下标为index处添加元素x | list.insert(index,x) |
删除首次出现的元素x | list.remove(x) |
删除元素(并返回该位置的元素)(默认最后一个元素) | list.pop([index]) |
清空列表 | list.clear() |
返回元素的下标(不存在元素则显示异常) | list.index(x) |
计数元素个数 | list.count(x) |
原地颠倒列表 | list.reverse() |
原地排序(对于汉语使用笔画数排序) | list.sort(key=None,reverse=False) |
返回对象的浅复制 | list.copy() |
返回列表长度(下面虽然无关但很常用) | len(list) |
最大值 | max(list) |
最小值 | min(list) |
直接排序 | sorted(list) |
乱序(像这些会在后边有涉及(需import random) | random.shuffle(L) |
其他相关函数 | map,filter,enumerate,reduce等 |
---------------------------------------------------------------------------
一、列表的创建
直接定义一个基本的列表方式:a=[1,2,3,4,5] ,字符串列表:a=["程序","菜鸟","一只","Python"]
二维列表:a=[[1,2,3],[4,5,6]]
列表创建的其他几种方式:
1. 使用list()函数创建列表
a=list()
print(a)
结果:[]
另外,list还可以将元组,字典等转化为列表
示例:
list((1,2,3,4)) #将元组转换为列表
——[1, 2, 3, 4]
>> a_dict={'name':1,'age':2}
>> list(a_dict) #仅将字典的键转为列表(可用于调用列表内容)
——['name','age']
list还可以转换字符串:
list("程序菜鸟一只abcd")
#----['程', '序', '菜', '鸟', '一', '只', 'a', 'b', 'c', 'd']
2.使用表达式和for等创建列表(创建函数列表)
1)range,for表达式和最简单的函数定义
a=list(range(10)) #使用list和range返回列表---[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b=list(i**2 for i in range(10)) #表达式和range创建列表-[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
c=list([] for i in range(10)) #定义一个类似于数组的东西
c=[None for i in range(10)] #自己看吧
2)在列表定义中使用表达式:
#--------使用random函数做表达式创建列表-----
import random
a=list(range(300))
b=[random.choice(a) for i in range(10)]
print(b)
#生成一个0~299间长度为10的随机列表
#--------定义函数,并使用函数创建-------
def f(a):
if (a>10):
return a+10
else:
return a-10
c=[f(x) for x in range(15)]
print(c)
#小于等于10的部分-10,大于10的部分+10
#-------------使用lambda表达式(未命名函数)创建-----------------------
d=[(lambda x:x+10)(t) for t in range(5)]
print(d)
#也可使用
ff=lambda x: x+5
e=[ff(x) for x in range(10)]
print(e)
二、列表的相关操作
1.按索引取值
a=list("arkxilingyyds")
print(a[0]) #默认从0开始
print(a[1])
2.列表拼接与倍增
x=list("程序")
y=list("菜鸟")
print(x+y) #直接拼接
#----['程', '序', '菜', '鸟']-----
print(x*3+y*2)
#---['程', '序', '程', '序', '程', '序', '菜', '鸟', '菜', '鸟']
3.列表的截取
a=list("arkxilingyyds")
print(a[2:]) #从下表为2的元素截取到尾
print(a[:10]) #从头截取
print(a[5:8]) #截取指定的段
print(a[-3:]) #从尾部截取3个元素
4.利用上面的函数实现列表增加元素
a=list("arkxilingyyds")
a.append(list("abcdefg"))
print(a)
print(a.pop(10)) #删除下标为10的元素
print(a) #已删除后的列表元素
其他的函数在上方的表里都有总结,在这里不再赘述
5.按某种方式进行排序
a=['abcd','abcdefg','abc','efghi']
a.sort(key=len,reverse=False) #按长度排序
print(a)
#-------------自定义排序函数---------
def f(x):
return x**2
b=[-3,-2,-1,0,1,2,3]
b.sort(key=f,reverse=False)
print(b)
#----[0, -1, 1, -2, 2, -3, 3]
三、列表的相关函数enumerate,map等用法
1)enumerate用途:构造一个带有下标的列表(每个元素是元组)
a=list("arkxilingyyds")
b=enumerate(a)
print(list(b)) #注意用list
#[(0, 'a'), (1, 'r'), (2, 'k'), (3, 'x'), (4, 'i'), (5, 'l'), (6, 'i'), (7, 'n'), (8, 'g'), (9, 'y'), (10, 'y'), (11, 'd'), (12, 's')]
2)zip函数
"压缩"列表
a=[1,2,3,4]
b=[5,6,7,8]
c=[9,10,11,12]
print(zip(a,b,c))
#[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]
print(list(map(list,zip(a,b,c)))) #这样可以得到二维列表
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
3) map函数( map(func,L1,....) )
(参考网址:python中的map函数_菜鸟更要努力呀-优快云博客)
map函数作用:将函数作用在列表中的每一个元素上,返回得到的值
第一个参数也可使用list,int等
#-----直接自定义函数------
def f(a):
if (a>3):
return a+10
else:
return a-10
a=[1,2,3,4,5,6]
b=list(map(f,a))
print(b)
#------[-9, -8, -7, 14, 15, 16] #小于3的减10,大于3的+10
#-----用labda匿名函数-------
ff=lambda x: x+10 #定义匿名函数
a=[5,6,7,8,9,10]
b=list(map(ff,a)) #计算相应的值
print(b)
#----[15, 16, 17, 18, 19, 20]-------
#比如用int转换为数字型
c=list("2345678")
print(list(map(int,c)))
#---[2, 3, 4, 5, 6, 7, 8]
相关参考资料:
1. (random库函数的使用教程)python库之random库(随机数函数)_sandalphon4869的博客-优快云博客_python random库
2.(创建列表的4种方法)Python创建列表的4种方式_围城客的专栏-优快云博客_python创建列表的方法
3. 《Python程序设计(第三版)》 董富国著