1.列表(list)
列表(list),是一个有序且可变的容器,在里面可以存放多个不同类型的元素。
1.1定义
user_list = ["苍老师","有坂深雪","大桥卫计"]
user_list = []
user_list.append("铁锤")
user_list.append("钢弹")
print(user_list) # ["铁锤"."钢弹"]
不可变类型:字符串、布尔、整型 (已最小,内部数据无法进行修改)
可变类型:列表(内部数据元素可以修改)
1.2独有功能
字符串只能重新创建一个新的
列表可以直接修改其中的元素
列表常见的独有功能如下:
1.追加,在原列表中尾部追加值。
2.批量追加,将一个列表中的元素逐一添加到另外一个列表
tools = ["把追安","caidao","langtou"]
tools.extend( [ 11,22,33] )
print(tools) # ["把追安","caidao","langtou",11,22,33]
tools = ["把追安","caidao","langtou"]
weapon = ( [ 11,22,33] )
weapon.extend(tools)
print(tools) # ["把追安","caidao","langtou"]
print(weapon) # ["把追安","caidao","langtou",11,22,33]
.extend() 相当于 for 循环加上 .append( )
3.插入,在愿列表的指定索引位置插入值
user_list = ["苍老师","有坂深雪","daqianweijiu"]
user_list.insert(0,"马蓉")
user_list.insert(2,"李小璐")
print(user_list)
4.从原列表删除(从左到右找到第一个删除)【慎用,里面没有就会报错】
user_list = ["把追安","caidao","langtou",11,22,33]
user_list.remove("把追安")
print(user_list) # ["caidao","langtou",11,22,33]
5.在原列表中根据索引踢出某个元素 【根据索引位置删除】
user_list = ["把追安","caidao","langtou",11,22,33]
user_list.pop(1) # ["把追安","langtou",11,22,33]
print(user_list)
ele = user_list.pop(1) # "caidao" 可以拿到删除的值
6.清空列表
user_list = ["fsd","ghgg"]
user_list.clear()
print(user_list) # []
7.根据值获取索引(从左到右找到第一个)【找不到会报错】
user_list = ["fsd","ghgg","xcb","ertwe"]
if "fsd" in user_list:
index = user_list.index("fsd")
print(index)
8.列表元素排序
num_list = [12,45,687,5444,55,0]
num_list.sort() # 从小到大排序
num_list.sort(reverse=True) # 让列表从大到小排序
num_list.sort(key=)
"""
### sort排序原理 ###
无论是整型还是字符串
均是根据编码的大小排序
从第一个字符的编码开始比较
v1 = ord("王")
可以获取10进制的表示
hex(v1) # 16进制表示
"""
注意:如果排序时既有整型和字符串无法进行比较(尽量数据类型统一)
9.翻转原列表
user_list = ["fsd","ghgg","xcb","ertwe"]
user_list.reverse()
print(user_list)
1.3公共功能
-
相加
-
相乘
-
运算符 in 判断包含关系
注意:列表检查元素是否存在时,是采用逐一比较的方式,但是效率比较低 -
获取长度
len( )
5.索引
读
改
# 删
del user_list[1]
user_list.remove("")
ele = user_list.pop(1)
注意:超出索引范围会报错
6.切片(很少用)
.reverse()可以实现翻转但是字符串不可以,.reverse()是列表的独有功能
千万不要在循环的过程中,边循环列表的数据,边删除列表里的数据,会出现索引跳跃删除
# 错误方式, 有坑,结果不是你想要的。
user_list = ["刘的话", "范德彪", "刘华强", '刘尼古拉斯赵四', "宋小宝", "刘能"]
for item in user_list:
if item.startswith("刘"):
user_list.remove(item)
print(user_list)
# 正确方式,倒着删除。
user_list = ["刘的话", "范德彪", "刘华强", '刘尼古拉斯赵四', "宋小宝", "刘能"]
for index in range(len(user_list) - 1, -1, -1):
item = user_list[index]
if item.startswith("刘"):
user_list.remove(item)
print(user_list)
1.4转换
- int、bool无法转换成列表
- str
name = "武沛齐"
data = list(name) # ["武","沛","齐"]
- 超前
v1 = (11,22,33,44) # 元组
vv1 = list(v1)
v2 = {"alex","elir","bsb"} # 集合
vv2 = list(v2)
1.5其他
1.5.1嵌套
列表属于容器,内部可以存放各种数据,所以它也支持列表的嵌套,如:
data = ["谢广坤",["海燕","赵本山"],True,[11,22,33,44],"宋小宝"]
对于嵌套的值,可以根据之前学习的索引知识点来进行学习,例如:
data = ["谢广坤",["海燕","赵本山"],True,[11,22,33,44],"宋小宝"]
2.元组
列表(list),是一个有序且可变的容器
元组(tuple),是一个有序且不可变的容器
|记住一句话:“我儿子永远不能换成是别人,但我儿子可以长大”
2.1定义
va = (11,22,33)
v2 = ("李姐","alex")
v3 = (11,22,3,"李姐","alex",True)
# 建议:在元组最后多加一个逗号
v3 = (11,22,3,"李姐","alex",True,)
d1 = (1,) 不加会认成整型
#建议:在元组最后多加一个逗号,用于标识他是一个元组
2.2独有功能
无
2.3公共功能
1.相加
2.相乘
3.获取长度
4.索引
5.切片
user_list = ["范德彪","刘华强","尼古拉机罩死",]
print(user_list[0:2])
print(user_list[1:])
print(user_list[:-1])
6.步长
元组切片都是新生成一个单位
7.for循环
目前:只有str、list、tuple可以被for循环
2.4转换
其他类型转换为元组,使用tuple(其他类型)目前只有字符串和列表可以转换为元组。
2.5嵌套
由于元组和列表都可以充当容器,他们内部可以放很多元素,并也支持元素内的各种嵌套