文章目录
列表(list)
列表的使⽤
列表的创建:通过[]来创建⼀个空列表
切⽚
- 切⽚是指从现有列表中获得⼀个⼦列表
- 通过切⽚来获取指定的元素
- 语法: 列表[起始 : 结束 : 步⻓]
- 通过切片获取元素时,会包括起始位置的元素,不会包括结束位置的元素
– 起始位置和结束位置的索引可以不写
– 如果省略结束位置, 则会从当前的开始位置⼀直截取到最后
– 如果省略开始位置, 则会从第⼀个元素截取到结束的元素,但是不包括结束的元素
– 如果开始位置和结束位置都省略, 则则会从第⼀个元素开始
截取到最后⼀个元素 - 步⻓表示每次获取元素的间隔,默认是1(可以省略不写)
- 步⻓不能是0,但可以是是负数
list_ = [1,2,3,4,5,6,7,8]
a = list_[-3:-1]
print(a)#[6, 7]
b = list_[-1:-3]
print(b)#[]
注意:序列都是从左向右排,不管你的下标是正的还是负的都是这个规律
step 也是可以等于负数的,str[::-1] 表示的是从列表的右边看这个列表,然后按照 step = 1 去列表中的元素,也可以是[::-2],[::-3],但是[2:5:-2],得不到结果,为空
list_ = [1,2,3,4,5,6,7,8]
a = list_[2:5:-2]
print(a) #[]
b = list_[::-2]
print(b) #[8, 6, 4, 2]
通⽤操作
+和 *
+可以将两个列表拼接成⼀个列表
*可以将列表重复指定的次数 (注意2个列表不能够做乘法,要和整数做乘法运算)
列表的⽅法
成员检测 in,not in
- in⽤来检查指定元素是否在列表当中
- not in ⽤来检查指定元素是否不在列表当中
添加元素append() ,extend()
- append() 像列表的最后添加⼀个元素
- extend( iterable ) 使⽤⼀个新的序列来扩展当前序列(它会将该序列的中元素添加到列表中) 参数需要传递⼀个序列
a = [1, 2, 3, 4, 5]
b = ["hahah","hehiehi"]
a.extend(b)
print(a)
#[1, 2, 3, 4, 5, 'hahah', 'hehiehi']
删除,清除列表del,clear,pop(),remove()
- del list:删除列表
- list.clear:清空
- pop() 根据索引删除并返回指定元素
- list.remove() 删除指定元素 (如果相同值的元素有多个,只会删除第⼀个)
如果被删除的值没在list中,则报错
因此删除list指定值的操作应该使用try-excepty语句,或者先行进行判断 - 方法一:
team = ["爵士","鹈鹕","公","马刺","雷霆","森林狼"]
value = "公牛" # 指定要移除的元素
if team.count(value)>0: # 判断要删除的元素是否存在
team.remove(value) # 移除指定的元素
print(team) #运行结果:['爵士', '鹈鹕', '马刺', '雷霆', '森林狼']
#根据索引删除
#del verse[-1]
- 方法二:
try:
team.remove(value)
except:
print("元素不存在")
print(team)
修改列表insert(),extend()
- insert(arg1,arg2) 像列表指定位置插⼊⼀个元素 参数1:要插⼊的位置 参数2:要插⼊的元素
翻转列表:reverse(),reversed(),sort(),sorted(),
- reverse() 翻转列表
a = [1, 2, 3, 4, 5]
a.reverse()
print(a) #[5, 4, 3, 2, 1]
a = [1, 2, 3, 4, 5]
b = a.reverse()
print(b)#None
l注意:
a.reverse() 这一步操作的返回值是一个None,其作用的结果,需要通过打印被作用的列表才可以查看出具体的效果
- reversed():
而reversed()是python自带的一个方法,准确说,应该是一个类,在经过reversed()的作用之后,返回的是一个把序列值经过反转之后的迭代器,所以,需要通过遍历,或者List,或者next()等方法,获取作用后的值
1:列表的反转
bb = [1,3,5,7]
print(list(reversed(bb)))
#[7, 5, 3, 1]
2.元组的反转:
aa = (1, 2, 3)
print(tuple(reversed(aa)))
3.字符串的反转
ss = "qwer1234"
print(''.join(reversed(ss)))
- sort(key=None,reverse=False) True反序;False 正序.默认是正序
a = [1, 2, 3, 4, 5]
a.sort(reverse=True)
print(a) #[5, 4, 3, 2, 1]
sort()方法对字符串列表进行排序时,
采用的规则是先对大写字母排序,然后再对小写字母排序。
如果想要对字符串列表进行排序(不区分大小写时),
需要指定其key参数
- sorted(iterable, key=None, reverse=False)
a = [1, 2, 3, 4, 5]
b = sorted(a, reverse=True)
print(b)#[5, 4, 3, 2, 1]
注意:sorted()与sort()区别
使用内置的sorted()函数实现:
sorted(iterable, key=None, reverse=False)
说明:列表对象的sort()方法和内置sorted()函数的作用基本相同
;不同点是在使用sort()方法时,会改变原列表的元素排列顺序,
而使用sorted()函数时,会建立一个原列表的副本,该副本为排序后
的列表
列表计算类:sum(),len(),max(),min(),count()
- len() 获取列表中元素的个数
- max() 获取列表中最⼤值
- min() 获取列表中最⼩值
- list.index(x[, start[, end]])
- list.count(x) 统计指定元素在列表中出现的个数
sum():统计数值列表的元素和
循环:enumerate()
enumerate()函数用法
print("考试排名:")
team = ["小明","小李","小王",'小张',]
for index,item in enumerate(team):
print(index + 1,item)`
运行结果:
考试排名:
1 小明
2 小李
3 小王
4 小张
注意:
使用sort()方法进行数值列表的排序比较简单,
但是使用sort()方法对字符串列表进行排序时,
采用的规则是先对大写字母排序,然后再对小写字母排序。
如果想要对字符串列表进行排序(不区分大小写时),
需要指定其key参数。例如,定义一个保存英文字符串的列表,
然后应用sort()方法对其进行升序排列,可以使用下面的代码
list = ['cat','Tom','Angela','pet']
list.sort()
# 默认区分字母大小写
print("区分字母大小写:",list)
list.sort(key=str.lower)
# 不区分字母大小写
print("不区分字母大小写:",list)
运行结果:
区分字母大小写: [‘Angela’, ‘Tom’, ‘cat’, ‘pet’]
不区分字母大小写: [‘Angela’, ‘cat’, ‘pet’, ‘Tom’]
。
二维列表的使用
str1 = "千山鸟飞绝"
str2 = "万径人踪灭"
str3 = "孤舟蓑笠翁"
str4 = "独钓寒江雪"
verse = [list(str1), list(str2), list(str3), list(str4)]
# 定义一个二维列表
print(verse)
print("\n-- 横版 --\n")
for i in range(4): # 循环古诗的每一行
for j in range(5): # 循环每一行的每个字(列)
if j == 4: # 如果是一行中的最后一个字
print(verse[i][j]) # 换行输出
else:
print(verse[i][j], end="")
# 竖版打印
#verse.reverse()
# # 对列表进行逆序排列
# print(verse)
# print("\n-- 竖版 --\n")
# for i in range(5): # 循环每一行的每个字(列)
# for j in range(4): # 循环新逆序排列后的第一行
# if j == 3: # 如果是最后一行
# print(verse[j][i]) # 换行输出
# else:
# print(verse[j][i], end="")
– 横版 –
千山鸟飞绝
万径人踪灭
孤舟蓑笠翁
独钓寒江雪
双层列表循环
#a 为嵌套列表,或者叫双层列表
a = [["one", 1], ["two", 2], ["three", 3] ]
for k,v in a:
print(k, "--", v)
选择过滤列表
# 还可以过滤原来list中的内容病放入新列表
# 比如原有列表a, 需要把所有a中的偶数生成新的列表b
a = [x for x in range(1,35)] #生成从1到34的一个列表
# 把a中所有偶数生成一个新的列表 b
b = [m for m in a if m % 2 == 0]
print(b)
列表生成式可以嵌套
# 列表生成式可以嵌套
# 由两个列表a,b
a = [i for i in range(1,4)] # 生成list a
print(a)
b = [i for i in range(100,400) if i % 100 == 0]
print(b)
# 列表生成是可以嵌套,此时等于两个for循环嵌套
c = [ m+n for m in a for n in b]
print(c)
# 上面代码跟下面代码等价
for m in a:
for n in b:
print(m+n, end=" ")
print()
# 嵌套的列表生成式也可以用条件表达式
c = [ m+n for m in a for n in b if m+n < 250]
print(c)
拷贝copy()用法,注意对比区别
# copy: 拷贝,此函数是浅拷贝,
# 列表类型变量赋值示例
a = [1,2,3,4,5,666]
print("列表a:",a)
b = a # list类型,简单赋值操作,是传地址
b[3] = 777
print("列表a:",a)
print("a的地址",id(a))
print("b:",b)
print("b的地址:",id(b))
print("*" * 20)
# 为了解决以上问题,list赋值需要采用copy函数
b = a.copy()
print(a)
print(id(a))
print(b)
print(id(b))
print("*" * 30)
b[3] = 888
print(a)
print(b)