1.列表
1.1列表的定义
List(列表)是python中使用 最频繁 的数据类型,在其他语言中通常叫做 数组
专门用于存储一串 信息
列表用[ ]定义,数据之间使用,分隔
列表的 索引 从0开始,索引 就是数据在 列表 中的位置编号,索引 又可以被称为 下标
注意:从列表中取值时,如果 超出索引范围,程序会报错
![](https://i-blog.csdnimg.cn/blog_migrate/d460f1163da7d57ee5ec4941a8aaed2f.png)
1.2列表的常用操作
对某一个函数的功能不清楚时,在pycharm中选中,按CTRL + Q键,即可查看。
![](https://i-blog.csdnimg.cn/blog_migrate/2a89f8c56f8adae19a316ec9c5dbf09d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a4efa722281d74af59e83081f1cdea1d.png)
序号 | 分类 | 关键字/函数/方法 | 说明 |
1 | 增加 | 列表.insert(索引,数据) | 在指定位置插入数据 |
列表.append(数据) | 在末尾追加数据 | ||
列表.extend(列表2) | 在列表2的数据追加到列表1 | ||
2 | 修改 | 列表[索引]=数据 | 修改指定索引的数据 |
3 | 删除 | del列表[索引] | 删除指定索引的数据(从内存中删除),建议使用列表提供的方法 |
列表.remove[数据] | 删除第一个出现的指定数据 | ||
列表.pop | 删除末尾数据 | ||
列表.pop(索引) | 删除指定索引数据 | ||
列表.clear | 清空列表 | ||
4 | 统计 | len(列表) | 列表长度 |
列表.count(数据) | 数据在列表中出现的次数 | ||
5 | 排序 | 列表.sort() | 升序排序 |
列表.sort(reverse=True) | 降序排序 | ||
列表.reverse() | 逆序、反转 |
name_list = ["zhangsan", "lisi", "wangwu"]
# 1.取值和取索引
# list index out of range - 列表超出索引范围
print(name_list[2])
# 知道数据的内容,想确定数据在列表中的位置
# 使用index方法需要注意,如果传递的数据不在列表中,程序会报错
print(name_list.index("lisi"))
# 2.修改
name_list[1] = "lisa"
# IndexError: list assignment index out of range
# 列表指定的索引超出范围,程序会报错
# name_list[3] = "lisasa"
# 3.增加
# append 方法可以向列表的末尾追加数据
name_list.append("xiaowang")
# insert 方法可以在列表的指定索引位置插入数据
name_list.insert(1,"xw")
# extend 方法可以把其他列表中的完整内容,追加到当前列表的末尾
temp_list = ["sun","zhu","sha"]
name_list.extend(temp_list)
# 4.删除
# remove 方法可以从列表中删除指定的数据
name_list.remove("wangwu")
# pop 方法默认可以把列表中最后一个元素删除
name_list.pop()
# pop 方法可以指定要删除元素的索引
name_list.pop(3)
# clear 方法可以清空列表
name_list.clear()
print(name_list)
1.3关键字、函数和方法
1.3.1关键字
关键字 是python内置的,具有特殊意义的标识符,关键字后面不需要使用括号
import keyword
print(keyword.kwlist)
print(len(keyword.kwlist))
![](https://i-blog.csdnimg.cn/blog_migrate/873f87fcf9c5e793e21afee0aa80c3e1.png)
1.3.2函数
函数封装了独立功能,可以直接调用
函数需要死记硬背
函数名(参数)
1.3.3方法
方法 和函数类似,同样是封装了独立的功能
方法 需要通过 对象 来调用,表示针对这个 对象 要做的操作
对象 可以简单的理解为变量名
对象.方法名(参数)
num_list = [6, 8, 4, 1, 10]
# 对象.方法名(参数)
num_list.sort()
num_list.sort(reverse=True)
# 函数名(参数)
print(num_list)
1.4循环遍历
遍历 就是 从头到尾 依次 从 列表 中获取数据,在 循环体内部 针对 每一个元素,执行相同的操作
在python中为了提高列表的遍历效率,专门提供的 迭代iteration遍历
使用for就能实现迭代遍历:
# for 循环内部使用的变量 in 列表
for name in name_list:
循环内部针对列表元素进行操作
print(name)
name_list = ["张三", "李四", "王五", "王小二"]
for my_name in name_list:
print("我的名字叫 %s" % my_name)
1.5应用场景
尽管python的列表中可以存储不同类型的数据,但是在开发中,更多的应用场景是:
列表存储相同类型的数据
通过迭代遍历,在循环体内部,针对列表中的每一项元素,执行相同的操作
![](https://i-blog.csdnimg.cn/blog_migrate/ed7efa112ba093f1abf3ee75bc30d1a2.png)
2.元组
2.1元组的定义
Tuple(元组)与列表相似,不同之处在于元组的 元素不能修改,元组 表示多个元素组成的序列,元组在python开发中,有特定的应用场景
用于存储一串信息,数据之间使用,分隔
元组用()定义
元组的 索引 从0开始,索引就是数据在 元组 中的位置编号
元组中通常保存的数据类型是不同的!
2.1.1元组的创建
info_tuple = ("zhangsan", 18, 1.75)
![](https://i-blog.csdnimg.cn/blog_migrate/7a4c3a0f460b05433c654344cb455a6f.png)
2.1.2空元组
info_tuple = ()
![](https://i-blog.csdnimg.cn/blog_migrate/8bfa7789d1a258feeca8914c2db757bb.png)
2.1.3只包含一个元素时
元组中 只包含一个元素时,需要 在元素后面添加逗号
info_tuple = (5,)
![](https://i-blog.csdnimg.cn/blog_migrate/2907d5908bde7aeee4533af68b87646f.png)
2.2元组的常用操作
![](https://i-blog.csdnimg.cn/blog_migrate/6a4c4803702a176d1052bbb20cc7e70f.png)
info_tuple = ("zhangsan", 18, 1.75, "zhangsan")
# 1.取值和取索引
print(info_tuple[0])
# 已经知道数据的内容,希望知道该数据在远组中的索引
print(info_tuple.index("zhangsan"))
# 2.统计计数
print(info_tuple.count("zhangsan"))
# 统计元组中包含元素的个数
print(len(info_tuple))
2.3循环遍历
取值 就是从 元组 中获取存储在指定位置的数据
遍历 就是 从头到尾 依次 从 元组 中获取数据
在python中,可以使用for循环遍历所有非数字型类型的变量:列表、元组、字典及字符串
提示:在实际开发中,除非 能够确认元组中的数据类型,否则针对元组的循环遍历需求并不是很多,因为元组中通常保存的数据类型是不同的。
#for 循环内部使用的变量 in 元组
for item in info:
循环内部针对元组元素进行操作
print(item)
info_tuple = ("zhangsan", 18, 1.75)
# 使用迭代遍历元组
for my_info in info_tuple:
# 使用格式字符串拼接 my_info 这个变量不方便!
# 因为元组中通常保存的数据类型是不同的
print(my_info)
2.4应用场景
尽管可以使用 for in遍历 元组,但是在开发中,更多的应用场景是:
函数的 参数 和 返回值,一个函数可以接收 任意多个参数,或者 一次返回多个数据
格式化字符串,格式化字符串后面的( )本质上就是一个元组
让列表不可以被修改,以保护数据安全
# 格式化字符串后面的'()'本质上就是元组
print("%s 年龄是 %d 身高是%.2f" %("小明",18,1.75))
info_tuple = ("小明", 21, 1.85)
print("%s 年龄是 %d 身高是%.2f" % info_tuple)
info_str = "%s 年龄是 %d 身高是%.2f" % info_tuple
print(info_str)
元组和列表之间的转换
使用list函数可以把元组转换成列表
list(元组)
使用tuple函数可以把列表转换成元组
tuple(列表)
3.字典
3.1字典的定义
dictionary(字典) 是 除 列表 以外python之中 最灵活 的数据类型
字典同样可以用来 存储多个数据,通常用于存储 描述一个 物体的相关信息
和列表的区别:列表 是 有序 的对象集合,字典 是 无序 的对象集合。
字典用{ }定义
字典使用 键值对 存储数据,键值对之间使用,分隔。
键key是索引
值value是数据
键 和 值 之间使用:分隔
键必须是唯一的 值 可以取任何数据类型,但 键 只能使用 字符串、数字或 元组
xiaoming = {"name":"小明","age":18,"gender":True,"weight":75.5}
key | value |
name | 小明 |
age | 18 |
gender | True |
height | 1.75 |
3.2字典的常用操作
![](https://i-blog.csdnimg.cn/blog_migrate/29b213dc6a88d5aa96d9cb724e68475c.png)
3.2.1取值、增加/修改和删除
xiaoming_dict = {"name": "小明"}
# 1.取值
print(xiaoming_dict["name"])
# 在取值的时候,如果指定的key不存在,程序会报错
# print(xiaoming_dict["name123"])
# 2.增加/修改
# 如果key不存在,会新增键值对
xiaoming_dict["age"] = 18
# 如果key存在,会修改已经存在的键值对
xiaoming_dict["name"] = "小小明"
# 3.删除
xiaoming_dict.pop("name")
# 在删除指定键值对的时候,如果指定的key不存在,程序会报错!
# xiaoming_dict.pop("name123")
print(xiaoming_dict)
3.2.2统计键值对数量、合并字典和清空字典
xiaoming_dict = {"name":"小明",
"age":18}
# 1.统计键值对数量
print(len(xiaoming_dict))
# 2.合并字典
temp_dict = {"height":1.75,
"age":20}
# 注意:如果被合并的字典中包含已经存在的键值对,会覆盖原有的键值对
xiaoming_dict.update(temp_dict)
# 3.清空字典
xiaoming_dict.clear()
print(xiaoming_dict)
3.3循环遍历
遍历 就是 依次 从 字典 中获取所有键值对
for 循环内部使用的 'key 的变量' in 字典
for k in xiaoming:
print("%s:%s"%(k,xiaoming[k]))
注意:在实际开发中,由于字典中每一个键值对保存数据的类型是不同的,所以针对字典的循环遍历需求并不是很多
xiaoming_dict = {"name":"小明",
"qq":"123456",
"phone":"10086"}
# 迭代遍历字典
# 变量k是每一次循环中,获取到的键值对的key
for k in xiaoming_dict:
print("%s - %s" %(k,xiaoming_dict[k]))
3.4应用场景
尽管可以使用 for in 遍历 字典,但是在开发中,更多的应用场景是:使用 多个键值对,存储 描述一个 物体 的相关信息--描述更复杂的数据信息;将 多个字典 放在 一个列表 中,在进行遍历,在循环体内部针对每一个字典进行 相同的处理
# 将 多个字典 放在 一个列表 中,在进行遍历
card_list = [
{"name": "张三",
"qq": "12345",
"phone": "110"},
{"name": "李四",
"qq": "54321",
"phone": "10086"}
]
for card_info in card_list:
print(card_info)