Python基础2——列表 元组 字典 集合 Git
1.列表:可变类型
- 公共功能
- 求长度 len(list)
- 索引 list[0]
- 切片 list[2:5]
- 步长 list[2:6:2]
- 修改 list[0] = new_value
- 数字、布尔和字符串除外
- 删除 del[index]
- 数字、布尔和字符串除外
- 三者本身不能被修改或删除
- 循环 for
- 成员运算 in
users = ['张三', '李四', '王五', '刘六'] for i in users: for element in i: print(element) - 独有功能
- append("content")
- 在列表的最后追加一个元素,基于现有列表追加,无返回值
- insert(index, "content")
- 在指定的索引位置插入元素,基于现有列表插入,无返回值
- extend()
- 将一个列表或任何可迭代元素添加到当前列表的末尾,将序列的所有子元素“扩展”到列表中
- remove("content")
- 删除指定值的元素,如果有多个,从左往右删除找到的第1个
- 传入的参数为被删除元素的值,基于现有列表删除,无返回值
# 千万不要在循环的过程中,边循环获取列表的数据 边删除列表的数据。 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) - pop(index)
- 根据索引位置删除元素,默认删除最后一个
- 传入的参数为被删除元素的索引,会将被删除的值返回
- clear()
- 清空列表所有元素,无返回值
- reverse()
- 反转,基于现有列表的顺序反序,无返回值
- sort()
- 排序,默认参数为reverse=False,即从小到大排,reverse=True时从大到小排
- 基于现有列表直接排序,无返回值
- append("content")
2.元组:不可变类型
- 1.书写规范
users = (11, 22, 33, "helloworld")
- 2.公共功能
- 索引
- 排除int bool
- 切片
- 排除int bool
- 步长
- 排除int bool
- 删除
- 排除tuple str int bool
- 修改
- 排除tuple str int bool
- for循环
- 排除int bool
- 求长度len
- 排除int bool
- 成员运算 in
- 索引
- 3.独有功能(无)
- 4.元组嵌套(⭐️⭐️)
# 特殊:元组中的元素(儿子不可被修改/删除)
v1 = (11, 22, 33)
v1[2] = 9 # 错误,元组属于不可变类型,其值不可修改
v2 = [11, 22, 33, (11, 22, 33)] # 嵌套元组的列表
v2[-1][1] = 99 # 错误,因为元组的内部元素不可改变
v2[3] = 123 # 正确,元组整体作为列表的子元素可以被修改掉
v3 = (11, [1, 2, 3], 22, 33) # 嵌套列表的元组
v3[1] = 666 # 错误,列表整体作为元组的子元素不可以被修改掉
v3[1][2] = 111 # 正确,作为子元素的列表内部可以被修改
3.字典:dict Python3.6后有序 键值对 键必须可哈希
- 1.独有功能
- keys()
- 获取字典中所有的键,有返回值
- values()
- 获取字典中所有的值,有返回值
- items()
- 获取字典中所有的键值对,有返回值
info = {"age":12, "status":True, "name":"wupeiqi","email":"xx@live.com"} data = info.items() if ('age', 12) in data: print("在") else: print("不在") - get()
- 根据键获取值
- 若指定键不存在可指定默认返回值
- dict.get("k1111", 666) 当键"k1111"不存在时返回666
- dict.get("k1111") 当键"k1111"不存在时返回None
- set_default()
- 设置值
data = { "name": "武沛齐", "email": 'xxx@live.com' } data.setdefault("age", 18) print(data) # {'name': '武沛齐', 'email': 'xxx@live.com', 'age': 18} data.setdefault("name", "alex") print(data) # {'name': '武沛齐', 'email': 'xxx@live.com', 'age': 18} - pop()
- 根据键获取(弹出)值,有返回值
- popitem()
- py3.6之后,popitem()移除最后的值,后进先出。
- py3.6之前,popitem()随机删除。
info = {"age":12, "status":True,"name":"武沛齐"} data = info.popitem() # ("name","武沛齐" ) print(info) # {"age":12, "status":True} print(data) # ("name","武沛齐") - dict()
- 将其他类型数据转为字典类型
v = dict( [ ("k1", "v1"), ["k2", "v2"] ] ) print(v) # { "k1":"v1", "k2":"v2" } - update()
- dict.update({key: value}) 参数为键值对
- 若key存在,则更新其value
- 若key不存在,则添加新的键值对
- dict.update({key: value}) 参数为键值对
- keys()
- 2.公共功能
- 求长度 len()
- 索引
- 切片【无】
- 步长【无】
- 循环for
- 修改
- 存在就修改值为新的值
- 不存在就增加新的键值对
- dict[key] = value
- 删除
- del dict[key]
- 成员运算 in
- key in dict
- key in dict.keys()
- key in dict.values()
- key in list(dict.values())
- 求并集(Python3.9新加入)
v1 = {"k1": 1, "k2": 2} v2 = {"k2": 22, "k3": 33} v3 = v1 | v2 print(v3) # {'k1': 1, 'k2': 22, 'k3': 33}
4.集合:set 无序 无重复
- 1.独有功能
- add()
- 集合本身添加元素,无返回值
- discard()
- 集合本身删除元素,无返回值
- update()
- 集合本身更新(添加)元素,无返回值
- intersection
- 求交集,返回新的集合,还可以用“&”运算符求交集
- 方法参数可以传入列表/元组
- union
- 求并集,返回新的集合,还可以用“|”运算符求并集
- 方法参数可以传入列表/元组
- difference
- 求差集,返回新的集合,还可以用“-”运算符求差集
- 方法参数可以传入列表/元组
- symmetric_difference
- 求对称差集,返回新的集合
- 方法参数可以传入列表/元组
- add()
- 2.公共功能
- 求长度 len()
- 索引【无】
- 步长【无】
- 切片【无】
- 删除【无】
- 修改【无】
- 3.集合的存储原理
- 元素必须可哈希,内部通过通过哈希函数把值转换成一个数字
![]()
- 目前可哈希的数据类型包括int、bool、str、tuple,而list、set是不可哈希的,因此集合的元素只能是 int、bool、str、tuple
- 因存储原理特殊,集合的查找效率非常高(数据量大了才明显)
# 查找效率低 user_list = ["武沛齐","alex","李璐"] if "alex" in user_list: print("在") else: print("不在") user_tuple = ("武沛齐","alex","李璐") if "alex" in user_tuple: print("在") else: print("不在") # 查找效率高 user_set = {"武沛齐","alex","李璐"} if "alex" in user_set: print("在") else: print("不在")- 由于True和False本质上存储的是 1 和 0 ,而集合又不允许重复,所以在整数 0、1和False、True出现在集合中会有如下现象
v1 = {True, 1} print(v1) # {True} v2 = {1, True} print(v2) # {1} v3 = {0, False} print(v3) # {0} v4 = {False, 0} print(v4) # {False} - 元素必须可哈希,内部通过通过哈希函数把值转换成一个数字
5.面试相关:写出你常用的git命令;你们公司是怎么用git做开发的?
- 1.在码云或GitHub等代码托管的网站创建自己的仓库,创建完后会生成一个仓库地址。
- 2.在PC本地写代码......
- 3.将代码提交到远程仓库
- 3.1 初始化
- 进入一个任意的文件夹,如D:\homework\
- git init
- git config --global user.name "178xxxxxxxx"
- git config --global user.email "1xxxxxxxx6@qq.com"
- git remote add origin https://gitee.com/code_202206/20220666.git
- 至此,git已将D:\homework\目录管理起来,以后此文件夹有任何变化,git都会检测到(使用git status命令可以查看状态)
- 3.2 代码收集并提交
- git status
- git add .
- git commit -m "记录"
- git push origin master 将本地D:\homework\目录下的内容同步到码云仓库
- 3.3 修改代码或删除文件等对本地D:\homework\下任何文件做操作
- git status
- git add .
- git commit -m "记录"
- git push origin master 将本地D:\homework\目录下的内容同步到码云仓库
- 3.4 如果远程有本地没有的代码,必须先执行:git pull origin master 【可能会引发合并问题】【避免】
- 3.1 初始化
6.案例
- 1.练习题:请打印1-10。for循环搭配range
for i in range(1, 11):
print(i)
- 2.练习题:请打印1-10,但不打印7
for i in range(1, 11):
if i == 7:
pass
else:
print(i)
注意for和while的应用场景,有穷尽优先使用for,无穷尽优先使用while。
- 3.实现一个整数加法计算器(两个整数相加),如content = input("请输入内容:"),用户输入5+9或5 + 9(含空白),然后进行分割转换+最终进行整数的计算得到结果。
content = input("请输入:") # [5+9] [5 +9] 或[ 5 + 9 ]
result = content.split('+')
result
v1 = int(result[0])
v2 = int(result[1])
v3 = v1 + v2
print(v3)
- 4.练习题:请通过for循环和数字计数器实现打印:
0 张三
1 李四
2 王五
3 刘六
users = ['张三', '李四', '王五', '刘六']
count = 0
for i in users:
print(count, i)
count += 1
users_len = len(users)
for index in range(0, users_len):
print(index, users[index])
- 5.练习题:在空列表中累加4个名字。
users = []
while True:
name = input("请输入姓名:")
users.append(name) # 列表的最后追加一个元素
print(users)
if len(users) == 4:
break
- 6.练习题:用户名和密码校验
# 用户名和密码校验 实例
username = input("请输入要登录的用户名:")
password = input("请输入要登录的密码")
for item in users:
result = item.split(',') # result是列表类型
user = result[0]
pwd = result[1]
if user == username and pwd == password:
print('登录成功')
break


浙公网安备 33010602011771号