第三章 python基础 数据结构(list、set、tuple、dict、string五大数据类型)

本文详细介绍了Python中的五大基础数据结构:列表(list)、元组(tuple)、字典(dict)、集合(set)和字符串(string),包括它们的概念、创建方式、操作方法等,旨在帮助读者深入理解这些数据类型的特点和用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#列表(list)

概念

列表是序列类型的一种扩展,十分常用

  • 列表是一种序列类型,创建后可以随意被修改

创建

  • 使用方括号 [] 或list() 创建,元素间用逗号 , 分隔

  • 列表中各元素类型可以不同,无长度限制

  • list01 = [1,2,3,4]

  • """

  •   [] 空列表

  •   list() 里面什么都没有,创建空列表

  •   list(["张三","李四"])

  • """

  • list02 = list() #[]

  • list03 = list(["张三","李四"])

  • print(list01)

  • print(list02)

  • print(list03)

  • list04 = [12.3,10,3.14e2,"张三"]

  • print(list04) #[12.3, 10, 314.0, '张三']

常用函数

#创建list

list01 = [1,2,5,7,-2,-9]

#len(列表) 统计列表中元素的个数

a = len(list01)

print(a) #6

#sum(列表) 求和

b = sum(list01)

print(b) #4

#max(列表) 最大值

c= max(list01)

print(c) #7

#min(列表) 最小值

d = min(list01)

print(d) #9

#创建

list01 = ["waho","迪热巴","黄昊","鹿","于晏"]

#list.insert(index,值)  根据下标进行插入数据

list01.insert(1,"幂")

print(list01)  #['wahao', '幂', '迪热巴', '黄昊', '鹿', '于晏']

#list.append(值) 在末尾插入

list01.append("吴凡")

print(list01) # ['wahao', '幂', '迪热巴', '黄昊', '鹿', '于晏', '亦凡']

#创建

list01 = ["wahao","迪热巴","黄昊","亦凡","鹿","于晏","wahao"]

#list.pop(index) 删除指定位置的数据

list01.pop(3)

print(list01)  #['wahao', '迪热巴', '黄昊', '鹿', '于晏', 'wahao']

#list.remove(值) 删除值,但是他删除的是值第一次出现的位置

list01.remove("wahao")

print(list01) #['迪热巴', '黄昊', '鹿', '于晏', 'wahao']

#list.clear() 删除所有数据

list01.clear()

print(list01) #[]

  • List[i] = 值(要修改的值)

#重新进行赋值

list01[3] = "幂"

print(list01)  #['wahao', '迪热巴', '黄昊', '幂', '鹿', '于晏', 'wahao']

#创建list

list01 = [1,2,5,7,-2,-9]

#查询所有 ---直接打印列表名字

print(list01)

"""

  查询单个值

   利用[index]进行查询 index-->从0开始

"""

print(list01[1])  #2

"""

 查询多个值

   [start:stop]   左开右闭

   小数在前面

   正向递增  反向递减   一负一正

   

   -6 -5 -4 -3  -2  -1

   [1  2  5  7  -2  -9]

    0  1  2  3   4   5

"""

print(list01[1:4])  #[2, 5, 7]

print(list01[-5:-2]) #[2, 5, 7]

print(list01[-5:4]) #[2, 5, 7]

常用方法

#list.reverse()   反转

list01 = [1,2,3,4,5,6]

list01.reverse()

print(list01)  #[6, 5, 4, 3, 2, 1]

#list.copy() 拷贝

list02 = list01.copy()

print(list02)

"""

 list.sort(reverse = Ture/False) 排序 默认是升序

 reverse = Ture降序  reverse = False 升序

"""

list03 = [1,8,4,2,-9]

list03.sort()

print(list03) #[-9, 1, 2, 4, 8]

list03.sort(reverse=True)

print(list03)  #[8, 4, 2, 1, -9]

#元组(tuple)

 概念

元组是序列类型的一种扩展

  • 元组是一种序列类型,一旦创建就不能被修改  不能增删改

创建

  • 使用小括号 () 或 tuple() 创建,元素间用逗号 , 分隔

  • #创建

  • tuple01 = (1,2,3)

  • tuple02 = tuple() #空元组  ()

  • tuple03 = tuple((5,6,7))

  • print(tuple01)

  • print(tuple02)

  • print(tuple03)

意义

  • #创建

  • tuple02 = tuple() #空元组  ()

  • list01 = list() #[]

  • """

  •  空列表  空元组  空集合 空字典都是False

  •  all()

  • """

  • print(all([[],()])) #False

#创建

tuple02 = (1,2,3,4,5,6)

"""

 查询所有值  直接打印元组名字

 查询单个值  [index]

 查询多个值  [start:stop] 左开右闭 一负一正 

 -6  -5  -4  -3  -2  -1

 (1,  2,  3,  4,  5,  6)

  0    1   2  3   4   5

"""

print(tuple02)

print(tuple02[2])

print(tuple02[1:4])

print(tuple02[-5:-2])

print(tuple02[-5:4])

运算符

#创建

Str = ("张三")

print(type(Str)) #<class 'str'>

#字符串只能存放一个值  元组可以存放多个值,加个逗号可以进行区分

tuple01 = ("张三",)

print(type(tuple01)) #<class 'tuple'>

#复制完以后把数据变成元组

print(tuple01*3)  #('张三', '张三', '张三')

#字典(dict)

概念

  •   映射是一种键(索引)和值(数据)的对应

""" 

 映射

 key  value

 张三  18

 李四  20

 王五  80

"""

"""

    [1,2,3,4]

索引 0 1 2 3

"""

创建

  • 键值对:键是数据索引的扩展

  • 字典是键值对的集合,键值对之间无序(没有索引)

  • 采用大括号{}和dict()创建,键值对用冒号: 表示

  • 字典类型是“映射”的体现

  • <字典变量> = {<键1>:<值1>, … , <键n>:<值n>}

#创建

dict01 = {"张三":18,"李四":20,"王五":80}

dict02 = dict()

dict03 = dict({"张三":90,"李四":20})

print(dict01)  #{'张三': 18, '李四': 20, '王': 80}

print(dict02) #{}

print(dict03)  #{'张三': 90, '李四': 20}

"""

  dict01[新的key] = 新的值  添加数据

  

"""

dict01["小乔"] = "天魔缭乱"

print(dict01) #{'鲁班': '空中支援', '花木兰': '切换形态', '孙策': '开船', '元哥': '无敌时间移位', '小乔': '天魔缭乱'}

"""

 dict.pop(key)  根据key删除一对数据

 dict.clear()  清除所有数据

"""

dict01.pop("元哥")

print(dict01) #{'鲁班': '空中支援', '花木兰': '切换形态', '孙策': '开船'}

"""

  只能修改值,不可以修改key

  为什么:因为key是唯一的,不能重复的,避免出现重复的情况所以不能修改

  怎么修改: 

      先根据key拿到值  dict01["孙策"]

      再重新赋值

"""

dict01["孙策"] = "乘风破浪"

print(dict01) #{'鲁班': '空中支援', '花木兰': '切换形态', '孙策': '乘风破浪', '元哥': '无敌时间移位'}

#创建

dict01 = {"鲁班":"空中支援","花木兰":"切换形态","孙策":"开船","元哥":"无敌时间移位"}

# dict.keys()  查看所有的key(英雄)

print(dict01.keys()) #dict_keys(['鲁班', '花木兰', '孙策', '元哥'])

# dict.values()  查询所有的value(大招)

print(dict01.values()) #dict_values(['空中支援', '切换形态', '开船', '无敌时间移位'])

"""

 查询单个值

  1.dict[key]  利用key查询value

  2.dict.get(key,默认值)  利用key查询value 如果key没有,那么就输出默认值

"""

print(dict01["花木兰"]) #切换形态

print(dict01.get("花木兰"))  #切换形态

print(dict01.get("貂蝉","没有此英雄,请购买")) #没有此英雄,请购买

"""

 查询所有值(包括key和value)

  1.直接打印字典名

  2.dict.items() 迭代方法

"""

print(dict01) #{'鲁班': '空中支援', '花木兰': '切换形态', '孙策': '开船', '元哥': '无敌时间移位'}

print(dict01.items()) #dict_items([('鲁班', '空中支援'), ('花木兰', '切换形态'), ('孙策', '开船'), ('元哥', '无敌时间移位')])

常用的函数和方法

"""

 k in dict    key在不在字典里面

 如果在输出True  如果不在输出False

 为什么 20 in dict0

   原因是他只能判断key在不在,不能判断value在不在

"""

print("张三" in dict01) #True

print(20 in dict01) #False

"""

 dict01.update(dict02)  把02中的数据更新到01中

 更新是更新多个数据

 是复制吗? no

 但是你可以理解成添加数据

"""

#创建字典

dict01 = {"张三":20,"王五":30,"赵六":70,"李四":80}

dict02 = {"翠花":20,"光头强":10}

dict01.update(dict02)

print(dict01) #{'张三': 20, '王五': 30, '赵六': 70, '李四': 80, '翠花': 20, '光头强': 10}

print(dict02) #{'翠花': 20, '光头强': 10}

#创建字典

dict01 = {"张三":20,"王五":30,"赵六":70,"李四":80}

dict02 = {"翠花":20,"光头强":10}

"""

  del 字典名[key]  删除指定位置的数据

  和pop一样 

  dict.pop(key) 删除指定位置的数据

"""

del dict01["李四"]

print(dict01) #{'张三': 20, '王五': 30, '赵六': 70}

#set(集合)

概念

集合是多个元素的无序(没有下标)组合

集合类型与数学中的集合概念一致

集合元素之间无序,每个元素唯一,不存在相同元素

集合元素不可更改,不能是可变数据类型    

为什么? 无序唯一


创建

  • 集合用大括号 {} 表示,元素间用逗号分隔

  • 建立集合类型用 {} 或 set()

  • 建立空集合类型,必须使用set()

  • #创建

  • set01 = {1,2,3,4,5}

  • set02 = set() #set()

  • set03 = set({9,10,11})

  • print(set01)

  • print(set02) 

  • print(set03)

  • """

  •  空列表 []

  •  空元组 ()

  •  空字典 {}

  •  空集合 set()

  •   原因是字典的创建也是{},两者冲突了

  •    所以我们的空集合是set(),创建空集合的时候必须使用set()

  • """

  • print(type({})) #<class 'dict'>

  • print(type(set())) #<class 'set'>

#创建

set01 = {"花木兰","貂蝉","妲己","王昭君"}

"""

  set.add(数据) 添加一个数据  不也能添加已有的数据,虽然不报错,但是不显示

"""

set01.add("杨玉环")

print(set01) #{'花木兰', '王昭君', '貂蝉', '妲己', '杨玉环'}

set01.add("花木兰")

print(set01) #{'花木兰', '杨玉环', '王昭君', '妲己', '貂蝉'}

"""

 set01.update(set02) 批量添加数据

   把set02添加到zet01中

"""

set02 = {"嬴政","武则天"}

set01.update(set02)

print(set01) #{'花木兰', '嬴政', '杨玉环', '妲己', '王昭君', '武则天', '貂蝉'}

 不可以更改数据

集合元素不可更改,不能是可变数据类型    

为什么? 无序唯一

直接打印集合名字去查询

不能使用索引进行查询,因为我们集合是无序的

print(set01)

print(set02) 

print(set03)

#基本数据类型

"""

 基本数据类型会为每一个对象单独赋值,即使值是一样,也是不同的内存

   >>> x = 500

>>> id(x)

1862181199440

>>> y = 500

>>> id(y)

1862181199472

 除了对象等于另一个对象

"""

a =1 

b = a

"""

 为什么vs内存一样,idle内存却不一样

   在vs是一起创建的,在idle中是先创建一个,在创建另外一个

"""

序列类型

>>> list01 = [1,2,3,4]

>>> list02 = list01

>>> id(list01)

2785429714632

>>> id(list02)

2785429714632

>>> list02 = ["张三","李四"]

>>> id(list01)

2785429714632

>>> id(list02)

2785422912456

>>> list02

['张三', '李四']

>>> list01

[1, 2, 3, 4]

>>>

### 关于 UniApp 框架推荐资源与教程 #### 1. **Uniapp 官方文档** 官方文档是最权威的学习资料之一,涵盖了从基础概念到高级特性的全方位讲解。对于初学者来说,这是了解 UniApp 架构技术细节的最佳起点[^3]。 #### 2. **《Uniapp 从入门到精通:案例分析与最佳实践》** 该文章提供了系统的知识体系,帮助开发者掌握 Uniapp 的基础知识、实际应用以及开发过程中的最佳实践方法。它不仅适合新手快速上手,也能够为有经验的开发者提供深入的技术指导[^1]。 #### 3. **ThorUI-uniapp 开源项目教程** 这是一个专注于 UI 组件库设计实现的教学材料,基于 ThorUI 提供了一系列实用的功能模块。通过学习此开源项目的具体实现方式,可以更好地理解如何高效构建美观且一致的应用界面[^2]。 #### 4. **跨平台开发利器:UniApp 全面解析与实践指南** 这篇文章按照章节形式详细阐述了 UniApp 的各个方面,包括但不限于其工作原理、技术栈介绍、开发环境配置等内容,并附带丰富的实例演示来辅助说明理论知识点。 以下是几个重要的主题摘选: - **核心特性解析**:解释了跨端运行机制、底层架构组成及其主要功能特点。 - **开发实践指南**:给出了具体的页面编写样例代码,展示了不同设备间 API 调用的方法论。 - **性能优化建议**:针对启动时间缩短、图形绘制效率提升等方面提出了可行策略。 ```javascript // 示例代码片段展示条件编译语法 export default { methods: { showPlatform() { console.log(process.env.UNI_PLATFORM); // 输出当前平台名称 #ifdef APP-PLUS console.log('Running on App'); #endif #ifdef H5 console.log('Running on Web'); #endif } } } ``` #### 5. **其他补充资源** 除了上述提到的内容外,还有许多在线课程视频可供选择,比如 Bilibili 上的一些免费系列讲座;另外 GitHub GitCode 平台上也有不少优质的社区贡献作品值得借鉴研究。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值