1-4-05 数据类型-列表(list)

列表(list)

1.列表(list)

列表(list),是一个有序可变的容器,在里面可以存放多个不同类型的元素。

1.1 定义

user_list =  ["苍老师","有坂深雪","大桥未久"]

不可变类型:字符串、布尔、整型(已最小,内部数据无法进行修改)

可变类型:列表(内部数据元素可以修改)

1.2 独有功能

Python中为所有的列表类型的数据提供了一批独有的功能。

在开始学习列表的独有功能之前,先来做一个字符串和列表的对比:

  • 字符串,不可变,即:创建好之后内部就无法修改。【独有功能都是新创建一份数据】

  • 列表,可变,即:创建好之后内部元素可以修改。【独有功能基本上都是直接操作列表内部,不会创建新的一份数据】

列表中的常见独有功能如下:

1. 追加

在原列表中尾部追加值。

data_list.append(v1)

2. 批量追加

将一个列表中的元素逐一添加另外一个列表。

tools = ["搬砖","菜刀","榔头"]
tools.extend( [11,22,33] ) # weapon中的值逐一追加到tools中
print(tools) # ["搬砖","菜刀","榔头",11,22,33]

3. 插入

在原列表的指定索引位置插入值

user_list.insert(2,"李小璐")
print(user_list)
#插入不存在的索引会放入不会把报错

4. 删除

在原列表中根据值删除

从左到右找到第一个删除)【慎用,里面没有会报错】

user_list.remove("Alex")

5. 索引-剔除

在原列表中根据索引踢出某个元素(根据索引位置删除)

user_list = ["王宝强","陈羽凡","Alex","贾乃亮","Alex"]
#               0       1      2      3       4
user_list.pop(1)
print(user_list) #  ["王宝强","Alex","贾乃亮","Alex"]

user_list.pop() #默认将列表的最后一个值删除

6. 清空原列表

user_list.clear()

7. 索引-获取

根据值获取索引,(从左到右找到第一个删除)【慎用,找不到报错】

index = user_list.index("Alex")

8. 列表元素排序

num_list.sort()  # 让num_list从小到大排序
num_list.sort(reverse=True)  # # 让num_list从大到小排序

注意:排序时内部元素无法进行比较时,程序会报错(尽量数据类型统一)。【布尔类型和整数是可以比较的,但是字符串和整数是无法比较】

9. 反转原列表

user_list.reverse()

1.3 公共功能

1.相加

两个列表相加获取生成一个新的列表。

data = ["赵四","刘能"] + ["宋晓峰","范德彪"]
print(data) # ["赵四","刘能","宋晓峰","范德彪"]

2. 相乘

列表*整型 将列表中的元素再创建N份并生成一个新的列表。

data = ["赵四","刘能"] * 2
print(data) # ["赵四","刘能","赵四","刘能"]

3. 运算符in包含

由于列表内部是由多个元素组成,可以通过in来判断元素是否在列表中。

user_list = ["狗子","二蛋","沙雕","alex"] 
result = "alex" in user_list
# result = "alex" not in user_list
print(result) #  True
# 案例:敏感词替换
text = input("请输入文本内容:") # 按时打发第三方科技爱普生豆腐啊;了深刻的房价破阿偶打飞机
forbidden_list = ["草","欧美","日韩"]
for item in forbidden_list:
    text = text.replace(item,"**")
print(text)

注意:列表检查元素是否存在时,是采用逐一比较的方式,效率会比较低。

4. 获取长度

user_list = ["范德彪","刘华强",'尼古拉斯赵四']
print( len(user_list) )

5. 索引 - 读改删

一个元素的操作

# 读
user_list = ["范德彪","刘华强",'尼古拉斯赵四']
print( user_list[0] )
print( user_list[3] ) # 报错
# 改
user_list = ["范德彪","刘华强",'尼古拉斯赵四']
user_list[0] = "武沛齐"
print(user_list) # ["武沛齐","刘华强",'尼古拉斯赵四']
# 删
user_list = ["范德彪","刘华强",'尼古拉斯赵四']
del user_list[1]  #只能删除,但是拿不到这个值

user_list.remove("刘华强")  #也是删除
ele = user_list.pop(1)   #不光可以删除还可以拿到这个值

注意:超出索引范围会报错。提示:由于字符串是不可变类型,所以他只有索引读的功能,而列表可以进行 读、改、删

6.三个删除的比较

# 删 
user_list = ["范德彪","刘华强",'尼古拉斯赵四'] 
del user_list[1] #只能删除,但是拿不到这个值 
user_list.remove("刘华强") #也是删除
ele = user_list.pop(1) #不光可以删除还可以拿到这个值

7. 切片 - 读改删

多个元素的操作(很少用)

# 读
user_list = ["范德彪","刘华强",'尼古拉斯赵四']
print( user_list[0:2] ) # ["范德彪","刘华强"]

# 改  批量改
user_list = ["范德彪", "刘华强", '尼古拉斯赵四']
user_list[0:2] = [11, 22, 33, 44]
print(user_list) # 输出 [11, 22, 33, 44, '尼古拉斯赵四']

# 删
user_list = ["范德彪", "刘华强", '尼古拉斯赵四']
del user_list[1:]
print(user_list) # 输出 ['范德彪']

8. 步长

user_list = ["范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能"]
#              0        1        2          3       4
print( user_list[1:4:2] )

# 给你一个字符串请实现字符串的翻转?
name = "武沛齐"
name[::-1]

9. for循环

切记,循环的过程中对数据进行删除会踩坑【面试题】。

# 错误方式, 有坑,结果不是你想要的。

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)     # 列表 [11,22,33,44]
  • 集合
v2 = {"alex","eric","dsb"} # 集合
vv2 = list(v2) # 列表 ["alex","eric","dsb"]

1.5. 其他

1.5.1 嵌套

列表属于容器,内部可以存放各种数据,所以他也支持列表的嵌套,如:

data = [ "谢广坤",["海燕","赵本山"],True,[11,22,[999,123],33,44],"宋小宝" ]

对于嵌套的值,可以根据之前学习的索引知识点来进行学习,例如:

data = [ "谢广坤",["海燕","赵本山"],True,[11,22,33,44],"宋小宝" ]

print( data[0] ) # "谢广坤"print( data[1] ) # ["海燕","赵本山"]print( data[0][2] ) # "坤"print( data[1][-1] ) # "赵本山"

data.append(666)
print(data) # [ "谢广坤",["海燕","赵本山"],True,[11,22,33,44],"宋小宝",666]
# 创建用户列表#    用户列表应该长: [ ["alex","123"],["eric","666"] ]

# user_list = [["alex","123"],["eric","666"],]# user_list.append(["alex","123"])# user_list.append(["eric","666"])


user_list = []
while True:
    user = input("请输入用户名:")
    pwd = input("请输入密码:")

    data = []
    data.append(user)
    data.append(pwd)
    
    user_list.append(data)
user_list = []
while True:
    user = input("请输入用户名(Q退出):")
    if user == "Q":
        break
    pwd = input("请输入密码:")
    data = [user,pwd]
    user_list.append(data)

print(user_list)
posted @ 2022-10-19 09:16  布丁家的苏苏  Views(11)  Comments(0)    收藏  举报