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时从大到小排
      • 基于现有列表直接排序,无返回值

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不存在,则添加新的键值对
  • 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
      • 求对称差集,返回新的集合
      • 方法参数可以传入列表/元组
  • 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 【可能会引发合并问题】【避免】

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
posted @ 2024-12-01 15:44  pycoder_666  阅读(32)  评论(0)    收藏  举报