python入门篇07-数据容器(序列 集合 字典,json初识)基础(下)


1.前言简介

1.1 专栏传送门

文章待续未完 , 差一个字典 这几天补充

1.1.1 上文传送门

python入门篇06-数据容器(列表 元组 字符串)基础(上)

2. python基础使用

2.1 序列

2.1.1 序列定义

内容连续 有序 可使用下标索引的一类 数据容器, 如下均可以成为序列:

  • 列表
  • 元组
  • 字符串

关键词解释:
切片解释: [1,2,3,4,5] 取出 [2,3,4] 跟subSting()意思>> 差不多
步长解释 表示依次取的元素 (间隔-1)

2.1.2 序列参数解释

正常操作 [arg1,arg2,arg3]

  • arg1 开始下标(包含) : 表头部
  • arg2 终止下标(不包含) : 表尾部
  • arg3 (步长 1 依次取 2 隔一个取) 负数就是倒序

2.1.3 列表list切片

list1 = [0, 1, 2, 3, 4, 5, 6]
print(list1[1:4])  # [1, 2, 3]  print(list1[1:4:1])等效 1可不写
print(list1[-1:-4:-1])  # [6, 5, 4]
print(list1[7:3:-1])  # [6, 5, 4]

2.1.4 元组tuple切片

tuple1 = (0, 1, 2, 3, 4, 5, 6)
print(tuple1[:])  # (0, 1, 2, 3, 4, 5, 6)  :表示全部取出
print(tuple1[::-2])  # (6, 4, 2, 0)

2.1.5 字符串str切片

str1 = "张三同学, 被评选为三好学生, 大家鼓掌"
print(str1[::2])  # :从头开始 :一直到结尾 跳2-1个元素取出
print(str1[::-1])  # 掌鼓家大 ,生学好三为选评被 ,学同三张 (反转了)

2.2 集合定义

理解: 无序不重复的序列 用: {}表示 <class ‘set’>
与java中的set集合理解相同

2.2.1 set集合-基本语法

set1 = {
    
    1, 4, 2, 5, 4, 5, 4, 6, 2, 7}  # 集合
set2 = set()  # 定义空集合
print(set1)  # {1, 2, 4, 5, 6, 7}
print(type(set1))  # <class 'set'>

2.2.2 set集合-添加元素.add()

添加新元素 并且不存在的

set1.add(5)
set1.add(20)
print(set1)  # {1, 2, 4, 5, 6, 7, 20}

2.2.3 set集合- 移除元素remove()

set1.remove(1)
print(set1)

2.2.4 set集合- 随机取出一个元素pop()

pop = set1.pop()
print(f"取出的元素{
      
      pop},剩余集合是: {
      
      set1}")

2.2.5 set集合- 清空集合clear()

set1.clear()
print(set1)  # set()

2.2.6 set集合- 取出两个集合的差集 difference()

生成新集合

set01 = {
    
    1, 2, 3}
set02 = {
    
    1, 5, 6}
set03 = set01.difference(set02)  # 找到set01 不在set02集合内的元素
print(set01)
print(set02)
print(set03)  # {2, 3}

2.2.7 set集合- 消除差集difference_update()

(直接修改set01) 不生成新集合

set01 = {
    
    1, 2, 3}
set02 = {
    
    1, 5, 6}
set01.difference_update(set02)  # 消除差集 set01将与set02重复的元素删除 (直接修改set01)
print(set01)   # {2, 3}
print(set02)   # {1, 5, 6}

2.2.8 set集合- 集合并集 union()

生成并集后的新集合

set01 = {
    
    1, 2, 3}
set02 = {
    
    1, 5, 6}
set03 = set01.union(set02)
print(set01)  # 不变
print(set02)  # 不变
print(set03)  # {1, 2, 3, 5, 6}

2.2.9 set集合- 统计set集合元素数量 len()

print(len(set01))
print("")

2.2.10 set集合- 循环遍历元素for

for i in set01:
    print(i)

2.3 字典定义

字典 数据容器 (理解: java的 map k-v)

2.3.1 定义字典

dict1 = {
    
    "name": "张三", "age": 18}
dict2 = {
    
    }
dict3 = {
    
    }

print(type(dict2))
print(dict1)
print(dict2)
print(dict3)

2.3.2 key重复的效果

字典中的key是不可以重复的. 如果重复是会直接覆盖掉上一key, 示例如下(pycharm会直接警告)

dict1 = {
    
    "name": "张三", "name": 18}
print(dict1)  # {'name': 18} 直接覆盖上一个重复的 不会报错

2.3.3 获取value结果

使用方式: 变量名[key名]

dict1 = {
    
    "name": "张三", "age": 18}
print(dict1["name"])  # 张三

2.3.4 嵌套(字典类型)

长得跟json串相同

message = {
    
    
    "张三": {
    
    "age": 20, "nickName": "张三丰", "address": "中国"},
    "李四": {
    
    "age": 50, "nickName": "李四丰", "address": "地球"},
    "王五": {
    
    "age": 80, "nickName": "王五丰", "address": "月球"}
}
print(type(message))  # <class 'dict'>
print(message["张三"]["age"])  # 20
print(message["李四"]["nickName"])  # 李四丰
print(message["王五"]["address"])  # 月球

2.3.5 字典数据操作准备工作

新增 只要传递的key不存在 则为新增 传递的key存在,则为修改

dict1 = {
    
    "name": "张三", "age": 18}
print(dict1)

2.3.6 新增元素

传递不存在key = 新增

dict1["address"] = "地球"
print(dict1)  # {'name': '张三', 'age': 18, 'address': '地球'}

2.3.7 修改元素

传递存在的key = 修改

dict1["age"] = 36
print(dict1)  # {'name': '张三', 'age': 36, 'address': '地球'}

2.3.8 删除元素 (取出并删除)pop()

字典中删除元素 返回值是此元素

address = dict1.pop("address")
print(address)  # 地球
print(dict1)  # {'name': '张三', 'age': 36}

2.3.9 清空元素 clear()

结果是一个空字典{}

dict1.clear()
print(dict1)  # {}

2.3.10 获取全部的key keys()

返回一个列表

dict1 = {
    
    "name": "张三", "age": 18}
print(dict1.keys())  # dict_keys(['name', 'age'])

循环遍历元素

# ---> 遍历key(方法一)
for key in dict1.keys():
    print(f"{
      
      key},{
      
      dict1[key]} ", end="")  # name,张三 age,18
print("")

# ---> 直接for循环(方法二: )
for key in dict1:
    print(f"{
      
      key},{
      
      dict1[key]} ", end="")  # name,张三 age,18
print("")

2.3.11 统计字典元素个数

print(len(dict1))  # 2

2.4 json定义

java中前后端联调交互必备, 一种有规则的字符串

2.4.1 json详细介绍

在这里插入图片描述

3. 基础语法总结案例

3.1 根据str1字符串 取出 三好学生 字符串

str1 = "掌鼓家大,生学好三为选评被,学同三张"

3.1.1 方法一: 先倒序 在操作

3.1.2 方法二: 先操作 在倒序

3.1.3方法(3-n)种 直接切片截取 然后倒序

print(str1[-10:-14:-1])  # 全是倒着截取 然后再倒序

print(str1[8:4:-1])      # 反截取位置 然后倒序

print(str1[::-1][9:13])  # 先倒序 在截取

print(str1[5:9][::-1])  # 先截取在倒序

3.2 定义一下字典 等级升一级的 加10元余额

3.2.1 案例准备

company_dict = {
    
    
    "张三": {
    
    "age": 20, "balance": 20, "address": "中国", "vip": 1},
    "李四": {
    
    "age": 50, "balance": 30, "address": "地球", "vip": 2},
    "王五": {
    
    "age": 80, "balance": 40, "address": "月球", "vip": 3},
    "赵六": {
    
    "age": 30, "balance": 50, "address": "火星", "vip": 1}
}
print(company_dict)

3.2.2 实现代码

print("等级一的余额: 赠送10元")

for key in company_dict:
    if company_dict[key]["vip"] == 1:
        company_dict[key]["vip"] += 1
        company_dict[key]["balance"] += 10

print(company_dict)

4. 文章的总结与预告

4.1 本文总结

  • 序列的定义以及使用
  • 集合的使用
  • json串定义
  • 字典的使用
  • 两个基础小案例

4.2 下文预告

===> 传送门: 容器进阶, 函数进阶



作者pingzhuyan 感谢观看

猜你喜欢

转载自blog.csdn.net/pingzhuyan/article/details/133643234