python进阶,在第一期的基础上做了极大的优化,整体更加美观易懂
七、列表
7.1、列表的常用操作
7.1.1、查找
a、-----.statswith()
.statswith() : 判断字符串是否以某个子串开头,小括号内放子串,结果为布尔类型True和False
str5 = "hello my friend"
print(str5.startswith("hello")) # 结果:True
print(str5.startswith("he")) # 结果:True
b、-----.endswith()
.endswith() :判断字符串是否以某个子串结尾,小括号内放子串,结果为布尔类型True和False
str5 = "hello my friend"
print(str5.endswith("end")) #结果:True
c、-----.isalpha()
.isalpha() :判断字符串中是否都是字母
str5 = "hello my friend"
print(str5.isalpha()) # 结果:False(其中穿插有空格,空格不属于字母)
d、-----.isdigit()
.isdigit():判断字符串里面是否都是数字
str6 = "678"
print(str6.isdigit()) # 结果:True
e、-----.isalnum()
.isalnum: ()判断是否都是字母,或者是数字,或者是字母和数字的组合
str9a = "123abc"
str9b = "123456"
str9c = "abcdef"
print(str9a.isalnum())
print(str9b.isalnum())
print(str9c.isalnum())
# 结果:
>>> True
>>> True
>>> True
f、-----.isspace()
.isspace():判断字符串里面是否都是空格
str10 = " "
print(str10.isspace()) # True
7.1.2、查找
a、列表名[下标] 函数描述
name1 = ["xwa", "xla", "xza", "xwa"]
print(name1[2])
# 结果
>>> xza
b、.index(数据)存在返回下标,不存在就报错
name1 = ["xwa", "xla", "xza", "xwa"]
print(name1.index("xwa", 1, 4)) # 可以限制查找范围,否则默认找到该列第一个数据下标
# 结果:
>>> 3
c、.count(数据) 返回指定数据在列表中的次数
name1 = ["xwa", "xla", "xza", "xwa"]
print(name1.count("xwa"))
# 结果
>>> 2
d、len(列表名) 返回列表的长度,长度指列表中有多少个数据
name1 = ["xwa", "xla", "xza", "xwa"]
print(len(name1))
# 结果:
>>> 4
7.1.3、判断和增加
a、in:数据in列表,判断数据是否在列表中,两种结果布尔型True或False
name1 = ["xwa", "xla", "xza", "xwa"]
print("xza" in name1) # 结果 True
print("xza1" in name1) # 结果 False
b、not in:数据not in 列表,判断数据是否不在列表中
name1 = ["xwa", "xla", "xza", "xwa"]
print("xla" not in name1) # False
print("xla1" not in name1) # True
c、append():列表名.append(数据)列表结尾追加数据
name1 = ["xwa", "xla", "xza", "xwa"]
name1.append("lie")
print(name1)
# 结果:
>>> ['xwa', 'xla', 'xza', 'xwa', 'lie'] # 多出以为,添加在列表尾部
d、extend():列表名.extend(数据)数据是序列的话列表结尾逐一追加
name1 = ["xwa", "xla", "xza", "xwa"]
name1.extend("lie") # 字符串拆分成一个个然后在结尾添加
print(name1)
# 结果:
>>> ['xwa', 'xla', 'xza', 'xwa', 'l', 'i', 'e']
e、insert():列表名.insert(下标,数据) 指定位置新增数据
name1 = ["xwa", "xla", "xza", "xwa"]
name1.insert(2, "xxa") # 将xxa添加到下标为2的位置
print(name1)
# 结果:
>>> ['xwa', 'xla', 'xxa', 'xza', 'xwa']
7.1.4、删除
a、del 目标 :del列表名或del列表名[下标],删除列表或列表中的数据
name2 = ["lw", "ll", "lw", "lh"]
del name2 # 删除列表
print(name2)
#结果
>>> 列表删除,报错
例二
name2 = ["lw", "ll", "lw", "lh"]
del name2[2]
print(name2)
# 结果:
>>> ['lw', 'll', 'lh']
b、pop():列表名.(下标),删除指定下标的数据,并且返回该数据(删掉的数据)
name2 = ["lw", "ll", "lw", "lh"]
del_name = name2.pop(1)
print(del_name) # 返回删除的数据
print(name2)
# 结果:
>>> ll
>>> ['lw', 'lw', 'lh']
name2 = ["lw", "ll", "lw", "lh"]
del_name2 = name2.pop()
print(del_name2) # 删除的数据
print(name2) # 删除后剩余的数据
# 结果:
>>> lh
>>> ['lw', 'll', 'lw']
c、remove():列表名.remove(数据),删除列表中某个数据的第一个配置项(两个相同的数据时候的第一个数据)
name2 = ["lw", "ll", "lw", "lh"]
name2.remove("lw") # 删除第一个lw
print(name2)
# 结果
>>> ['ll', 'lw', 'lh']
d、.clesr():列表名.clear() ,清空列表(删掉列表里面的所有数据
name2 = ["lw", "ll", "lw", "lh"]
name2.clear()
print(name2)
# 结果
>>> []
7.1.5、修改
a、列表名[下标] = 新数据 :列表名[下标] = 新数据,按照下标修改指定数据
name3 = ["yul", "kun", "yud", "yul"]
name3[2] = "lll"
print(name3)
# 结果
>>> ['yul', 'kun', 'lll', 'yul']
b、reverse():列表名.reverse(),实现列表中的数逆序,倒序
name3 = ["yul", "kun", "yud", "yul"]
name3.reverse() # 看结果,列表中的数据倒过来了
print(name3)
# 结果:
>>> ['yul', 'yud', 'kun', 'yul']
c、sort:列表名.sort() ,实现列表升序排序 ,数字从小到大,字母从a到z,汉字不规则,可能是按照拼音或者是笔画
name3 = ["yul", "kun", "yud", "yul"]
name4 = [3, 5, 2, 9, 1, 8, 0]
name3.sort()
name4.sort()
print(name3)
print(name4)
# 结果:
>>> ['kun', 'yud', 'yul', 'yul']
>>> [0, 1, 2, 3, 5, 8, 9]
d、sort:列表名.sort(reverse = False),reverse = True降序,reverse = False升序(默认) reverse表示排序的规则
name4 = [3, 5, 2, 9, 1, 8, 0]
name4.sort(reverse=True) # 降序
print(name4)
# 结果;
>>> [9, 8, 5, 3, 2, 1, 0]
name4 = [3, 5, 2, 9, 1, 8, 0]
name4.sort(reverse=False) # 升序
print(name4)
# 结果:
>>> [0, 1, 2, 3, 5, 8, 9]
7.1.6、复制
copy():列表名.copy() ,复制存储原数据
name4 = [3, 5, 2, 9, 1, 8, 0]
name3 = name4.copy()
print(name3)
print(name4)
# 结果;
>>> [3, 5, 2, 9, 1, 8, 0]
>>> [3, 5, 2, 9, 1, 8, 0]
7.2、列表的嵌套使用
列表嵌套:指的是一个列表里面包含了其他的子列表。
name5 = [[["xl", "yul", ["yy"]], "xw", "xz"], ["乐趣", "2", "3"], ["a", "b", "c"]] # 列表嵌套,[下标][下标]...都是从零开始
print(name5[1][2])
print(name5[0][0][2][0])
# 结果:
>>> 3
>>> yy
列表的循环遍历:依次打印列表的各个数据
list1 = ["wang", "li", "zang"]
# for循环
for i in list1:
print(i)
# 结果:
>>> wang
>>> li
>>> zang
7.3、while循环遍历
list1 = ["wang", "li", "zang"]
i = 0 # 下标从零开始
while i < len(list1): # 当不知道列表中有多少数据用len函数,len函数:返回长度
print(list1[i])
i += 1
# 结果:
>>> wang
>>> li
>>> zang
7.4、小练习
"""
10个宝珠,随机分配给张三团伙三人
宝珠:["a", "b", "c", ...]
张三团伙三人[[][][]]
"""
# 导入随机模块和函数
import random # 导入random随机模块
# num = random.randint(0, 2) # 返回0到2之间的任意整数
bead = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]
san = [[], [], []]
# 分配宝珠到张三哪里
for z in bead:
# 把宝珠z添加到张三三人的子列[[], [], []]那里去,使用append函数添加,append(数据), 列表名[下标] = 新数据,按照下标修改指定数据
# 随机分配:导入随机函数
num = random.randint(0, 2) # 再通过random模块导入随机函数,包前后0,1,将随机数给num,
san[num].append(z) # append() 列表尾追加函数
print(san)
# 结果:三次运行
# [['a', 'b', 'c', 'g', 'i', 'j'], ['d', 'h'], ['e', 'f']]
# [['c', 'e', 'g', 'h', 'i'], ['d', 'j'], ['a', 'b', 'f']]
# [['a', 'd', 'e', 'i'], ['b', 'g', 'j'], ['c', 'f', 'h']]