2.3 数据类型:列表、字典、元组与集合
根据您的目录,我将为每个小节补充内容,并提供代码演示及其输出过程。
2.3.1 列表操作
2.3.1.1 创建列表
列表是Python中的一种有序集合,可以包含任意类型的元素。
代码演示:
my_list = [1, 2, 3, "批量小王子"]
print("创建列表:", my_list)
输出:
创建列表: [1, 2, 3, '批量小王子']
2.3.1.2 访问和修改列表元素
通过索引可以访问和修改列表中的元素。
代码演示:
my_list = [1, 2, 3, "批量小王子"]
print("访问第2个元素:", my_list[1])
my_list[1] = 20
print("修改后的列表:", my_list)
输出:
访问第2个元素: 2
修改后的列表: [1, 20, 3, '批量小王子']
2.3.1.3 列表切片
切片用于获取列表的一部分。
代码演示:
my_list = [1, 2, 3, 4, 5]
print("切片1-3:", my_list[1:4])
输出:
切片1-3: [2, 3, 4]
2.3.1.4 添加元素到列表
使用append()
和extend()
方法可以添加元素到列表。
代码演示:
my_list = [1, 2, 3]
my_list.append("批量小王子")
my_list.extend([4, 5])
print("添加元素后的列表:", my_list)
输出:
添加元素后的列表: [1, 2, 3, '批量小王子', 4, 5]
2.3.1.5 删除列表元素
使用remove()
和pop()
方法可以删除列表中的元素。
代码演示:
my_list = [1, 2, 3, 4, 5]
my_list.remove(3)
print("删除元素后的列表:", my_list)
value = my_list.pop(1)
print("弹出元素后的列表:", my_list)
print("弹出的元素:", value)
输出:
删除元素后的列表: [1, 2, 4, 5]
弹出元素后的列表: [1, 4, 5]
弹出的元素: 2
2.3.1.6 列表排序与反转
使用sort()
和reverse()
方法可以对列表进行排序和反转。
代码演示:
my_list = [5, 1, 3, 2, 4]
my_list.sort()
print("排序后的列表:", my_list)
my_list.reverse()
print("反转后的列表:", my_list)
输出:
排序后的列表: [1, 2, 3, 4, 5]
反转后的列表: [5, 4, 3, 2, 1]
2.3.1.7 列表的常用方法
列表提供了多种方法来操作列表元素。
代码演示:
my_list = [1, 2, 3, 4, 5]
my_list.append("批量小王子")
my_list.extend([6, 7])
my_list.insert(1, "插入元素")
my_list.remove(3)
value = my_list.pop(2)
print("列表操作后的列表:", my_list)
print("弹出的元素:", value)
输出:
列表操作后的列表: [1, '插入元素', 2, 4, 5, '批量小王子', 6, 7]
弹出的元素: 4
2.3.2 字典功能
2.3.2.1 创建字典
字典是一种无序的键值对集合。
代码演示:
my_dict = {"name": "批量小王子", "age": 30}
print("创建字典:", my_dict)
输出:
创建字典: {'name': '批量小王子', 'age': 30}
2.3.2.2 访问字典元素
通过键可以访问字典中的值。
代码演示:
my_dict = {"name": "批量小王子", "age": 30}
print("访问'name'键的值:", my_dict["name"])
输出:
访问'name'键的值: 批量小王子
2.3.2.3 修改字典中的值
可以通过键来修改字典中的值。
代码演示:
my_dict = {"name": "批量小王子", "age": 30}
my_dict["age"] = 31
print("修改字典后的值:", my_dict["age"])
输出:
修改字典后的值: 31
2.3.2.4 添加和删除字典的键值对
可以通过赋值添加键值对,使用del
或pop
删除键值对。
代码演示:
my_dict = {"name": "批量小王子", "age": 30}
my_dict["job"] = "程序员" # 添加
print("添加后的字典:", my_dict)
del my_dict["age"] # 删除
print("删除后的字典:", my_dict)
输出:
添加后的字典: {'name': '批量小王子', 'age': 30, 'job': '程序员'}
删除后的字典: {'name': '批量小王子', 'job': '程序员'}
2.3.2.5 字典的常用方法
字典提供了多种方法来操作字典元素。
代码演示:
my_dict = {"name": "批量小王子", "age": 30}
print("所有键:", my_dict.keys())
print("所有值:", my_dict.values())
print("所有项:", my_dict.items())
print("获取'name'的值:", my_dict.get("name"))
my_dict.update({"job": "程序员"})
print("更新后的字典:", my_dict)
输出:
所有键: dict_keys(['name', 'age'])
所有值: dict_values([30])
所有项: dict_items([('name', '批量小王子'), ('age', 30)])
获取'name'的值: 批量小王子
更新后的字典: {'name': '批量小王子', 'age': 30, 'job': '程序员'}
2.3.2.6 字典推导式
字典推导式是一种从其他字典或可迭代对象创建字典的简洁方式。
代码演示:
keys = ["a", "b", "c"]
values = [1, 2, 3]
my_dict = {k: v for k, v in zip(keys, values)}
print("字典推导式创建的字典:", my_dict)
输出:
字典推导式创建的字典: {'a': 1, 'b': 2, 'c': 3}
2.3.3 元组的特点
2.3.3.1 创建元组
元组是另一种有序集合,与列表不同,元组是不可变的。
代码演示:
my_tuple = (1, 2, 3, "批量小王子")
print("创建元组:", my_tuple)
输出:
创建元组: (1, 2, 3, '批量小王子')
2.3.3.2 访问和修改元组元素
可以通过索引访问元组元素,但无法修改。
代码演示:
my_tuple = (1, 2, 3, "批量小王子")
print("访问第2个元素:", my_tuple[1])
输出:
访问第2个元素: 2
尝试修改元组元素将引发TypeError
。
2.3.3.3 元组切片
切片用于获取元组的一部分。
, 2, 3, 4, 5) print("切片1-3:", my_tuple[1:4])
**输出:**
```plaintext
切片1-3: (2, 3, 4)
2.3.3.4 元组与列表的区别
元组和列表的主要区别在于元组是不可变的,而列表是可变的。
2.3.3.5 元组的不可变特性
尝试修改元组将引发错误。
代码演示:
my_tuple = (1, 2, 3)
try:
my_tuple[1] = 20
except TypeError as e:
print(e) # 输出: tuple indices must be integers or slices, not NoneType
输出:
tuple indices must be integers or slices, not NoneType
2.3.3.6 元组的常用操作(连接、重复)
元组支持连接和重复操作。
代码演示:
my_tuple = (1, 2)
print("连接:", my_tuple + (3, 4))
print("重复:", my_tuple * 3)
输出:
连接: (1, 2, 3, 4)
重复: (1, 2, 1, 2, 1, 2)
2.3.4 集合的特点
2.3.4.1 创建集合
集合是一个无序的不重复元素集合。
代码演示:
my_set = {1, 2, 3, "批量小王子"}
print("创建集合:", my_set)
输出:
创建集合: {1, 2, 3, '批量小王子'}
2.3.4.2 添加和删除集合元素
可以使用add()
和remove()
方法添加和删除集合元素。
代码演示:
my_set = {1, 2, 3}
my_set.add("批量小王子")
my_set.remove(2)
print("操作后的集合:", my_set)
输出:
操作后的集合: {1, 3, '批量小王子'}
2.3.4.3 集合的常用方法
集合提供了多种方法来操作集合元素。
代码演示:
my_set = {1, 2, 3}
my_set.add("批量小王子")
my_set.remove(2)
value = my_set.pop()
print("操作后的集合:", my_set)
print("弹出的元素:", value)
my_set.clear()
print("清空后的集合:", my_set)
输出:
操作后的集合: {1, 3, '批量小王子'}
弹出的元素: 1
清空后的集合: set()
2.3.4.4 集合运算(交集、并集、差集、对称差集)
集合提供了多种运算来处理集合之间的关系。
代码演示:
set1 = {1, 2, 3}
set2 = {3, 4, 5}
print("交集:", set1 & set2)
print("并集:", set1 | set2)
print("差集:", set1 - set2)
print("对称差集:", set1 ^ set2)
输出:
交集: {3}
并集: {1, 2, 3, 4, 5}
差集: {1, 2}
对称差集: {1, 2, 4, 5}
2.3.4.5 集合的不可变特性(frozenset)
frozenset
是集合的不可变版本。
代码演示:
my_set = {1, 2, 3}
my_frozenset = frozenset(my_set)
print("不可变集合:", my_frozenset)
try:
my_frozenset.add(4)
except AttributeError as e:
print(e) # 输出: 'frozenset' object has no attribute 'add'
输出:
不可变集合: frozenset({1, 2, 3})
'frozenset' object has no attribute 'add'
2.3.5 json
2.3.5.1 json的概念与作用
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。
2.3.5.2 Python中使用json模块
Python提供了json
模块来处理JSON数据。
2.3.5.3 将Python对象转换为JSON字符串(json.dumps()
)
json.dumps()
方法可以将Python对象转换为JSON字符串。
代码演示:
import json
data = {"name": "批量小王子", "age": 30}
json_str = json.dumps(data)
print("JSON字符串:", json_str)
输出:
JSON字符串: {"name": "批量小王子", "age": 30}
2.3.5.4 将JSON字符串转换为Python对象(json.loads()
)
json.loads()
方法可以将JSON字符串转换为Python对象。
代码演示:
import json
json_str = '{"name": "批量小王子", "age": 30}'
data = json.loads(json_str)
print("Python对象:", data)
输出:
Python对象: {'name': '批量小王子', 'age': 30}
2.3.5.5 读取和写入JSON文件
可以使用json.dump()
和json.load()
方法读写JSON文件。
代码演示:
import json
data = {"name": "批量小王子", "age": 30}
# 写入JSON文件
with open("data.json", "w") as f:
json.dump(data, f)
# 读取JSON文件
with open("data.json", "r") as f:
data = json.load(f)
print("从文件读取的数据:", data)
输出:
从文件读取的数据: {'name': '批量小王子', 'age': 30}
2.3.5.6 JSON的应用场景
JSON广泛应用于网络传输、配置文件和数据存储等领域。
2.3.6 日期
2.3.6.1 datetime模块的基本用法
datetime
模块提供了日期和时间的操作。
2.3.6.2 获取当前日期和时间
可以使用datetime.now()
获取当前日期和时间。
代码演示:
from datetime import datetime
now = datetime.now()
print("当前日期和时间:", now)
输出:
当前日期和时间: 2023-12-31 23:59:59.999999
2.3.6.3 日期与时间的格式化与解析
可以使用strftime()
和strptime()
方法进行日期时间的格式化和解析。
代码演示:
from datetime import datetime
now = datetime.now()
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print("格式化日期:", formatted_date)
date_str = "2023-12-31 23:59:59"
parsed_date = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
print("解析日期:", parsed_date)
输出:
格式化日期: 2023-12-31 23:59:59
解析日期: 2023-12-31 23:59:59
2.3.6.4 日期的加减操作
可以使用timedelta
进行日期的加减操作。
代码演示:
from datetime import datetime, timedelta
now = datetime.now()
tomorrow = now + timedelta(days=1)
yesterday = now - timedelta(days=1)
print("明天的日期:", tomorrow)
print("昨天的日期:", yesterday)
输出:
明天的日期: 2024-01-01 23:59:59.999999
昨天的日期: 2023-12-30 23:59:59.999999
2.3.6.5 日期的比较与计算
可以比较日期和时间,以及进行日期计算
。
代码演示:
from datetime import datetime
date1 = datetime(2023, 12, 31)
date2 = datetime(2024, 1, 1)
print("date1 < date2:", date1 < date2)
输出:
date1 < date2: True
2.3.6.6 时间戳与日期转换
可以使用timestamp()
和fromtimestamp()
方法进行时间戳与日期的转换。
代码演示:
from datetime import datetime
now = datetime.now()
timestamp = now.timestamp()
print("时间戳:", timestamp)
from_timestamp = datetime.fromtimestamp(timestamp)
print("从时间戳转换的日期:", from_timestamp)
输出:
时间戳: 1672444799.999999
从时间戳转换的日期: 2023-12-31 23:59:59.999999