【目的和要求】
(1)掌握Python语言中的组合数据类型
(2)掌握列表、元组、字典、集合及字符串的基本应用
(3)熟练运用有关序列操作的Python内置函数
【实验准备】
【实验内容】
1. 实验练习:掌握字典相关方法
更新或添加元素:dict1[key] = value
例如:
items():变量解包:即将字典转化为键、值作为元组的列表
例如:
keys();键列表
例如:
values():值列表
例如:
has_key():判断是否存在某个键,返回结果true 或false
例如:
del 删除元素:调用python自身函数删除
例如:
len():取得字典中键值对个数
例如:
update():在原字典上合并字典,键相同时会被覆盖。
例如:
get():取得某个键对应的值
例如:
pop():弹出指定键对应的值
popitem():随机弹出键值对
clear():清除所有元素
例如:
字典的遍历:
2.实验练习:集合相关方法:
len():元素个数
例如:
add():添加元素
例如:
remove():删除元素
例如:
update():合并集合
例如:
pop():随机弹出某个元素
例如:
集合关系操作
s|t:s和t的并集
例如:
s&t:s和t的交集
例如:
s-t:求差集,存在于s集合而不存在于t集合中的
例如:
s^t:求对称差集
例如:
3. 下表是某商品销售价目表:
品名 | 单价(元) |
王老吉凉茶 | 4 |
可口可乐 | 3 |
脉动 | 6 |
统一方便面 | 5 |
火腿肠 | 2.5 |
运用Python序列结构设计一个字典,要求所有商品调整价格(8折),输出新价格。
4. 利用random随机函数库生成一个20个元素的整数列表,编程实现如下功能操作:
- 返回并输出索引为6的元素;
- 求列表数据中的最大值、最小值和平均值;
- 在索引为8的位置增加一个数据68
调整商品价格的Python代码:
# 商品价格字典
price_dict = {
'王老吉凉茶': 4,
'可口可乐': 3,
'脉动': 6,
'统一方便面': 5,
'火腿肠': 2.5
}
# 打折率
discount_rate = 0.8
# 调整商品价格
discounted_prices = {item: price * discount_rate for item, price in price_dict.items()}
# 输出新价格
for item, new_price in discounted_prices.items():
print(f"{item}的新价格为:{new_price}元")
利用random库生成列表并进行操作的Python代码:
import random
# 生成随机整数列表
random_list = [random.randint(1, 100) for _ in range(20)]
# 返回并输出索引为6的元素
element_at_index_6 = random_list[6]
print(f"索引为6的元素为:{element_at_index_6}")
# 求列表数据中的最大值、最小值和平均值
max_value = max(random_list)
min_value = min(random_list)
average_value = sum(random_list) / len(random_list)
print(f"最大值:{max_value}")
print(f"最小值:{min_value}")
print(f"平均值:{average_value}")
# 在索引为8的位置增加一个数据68
random_list.insert(8, 68)
# 输出修改后的列表
print("修改后的列表:", random_list)
思考题:
列表和元组的区别:
- 可变性:
- 列表(List)是可变的,可以通过索引修改、添加或删除元素。
- 元组(Tuple)是不可变的,一旦创建就不能被修改,无法添加、删除或修改元素。
- 语法表示:
- 列表使用方括号 [] 表示,如 [1, 2, 3]。
- 元组使用圆括号 () 表示,如 (1, 2, 3)。
- 性能:
- 由于元组是不可变的,其在迭代和访问元素时可能比列表稍微更快。
Python中适用于序列操作的一些内置函数:
- len(sequence) - 返回序列的长度。
- max(sequence) - 返回序列的最大值。
- min(sequence) - 返回序列的最小值。
- sum(sequence) - 返回序列所有元素的和。
- sorted(sequence) - 返回一个排序后的新列表,不修改原始序列。
- reversed(sequence) - 返回一个反向的迭代器,可以用来反向遍历序列。
- enumerate(sequence) - 返回一个包含索引和元素的枚举对象。
- zip(sequence1, sequence2, ...) - 将多个序列中对应的元素打包成元组,返回一个包含这些元组的新列表。
i
s=s+z