4、集合
# 创建一个集合my_set = {1, 2, "hello", 3.5}# 访问集合中的元素 , 注意集合中的元素是无序的 , 每次输出结果可能不同print(my_set)# {1, 2, "hello", 3.5}# 将列表转换为集合new_set = set([1, 2, 2, 3, 4, 4])print(new_set)# {1, 2, 3, 4}# 添加元素到集合中my_set.add("world")print(my_set)# {1, 2, "hello", 3.5, "world"}# 删除集合中的元素my_set.remove(1)print(my_set)# {2, "hello", 3.5, "world"}循环控制
Python 的循环控制是指可以让程序进行循环执行的结构 , 常用的循环结构包括 for 循环和 while 循环 。下面分别给出这两种循环结构的示例代码:
for 循环:是一种常见的循环结构 , 通常用于对一个序列或者集合中的每一个元素进行遍历操作 , 代码示例:
fruits = ["apple", "banana", "orange"]for fruit in fruits:print(fruit)这段代码中 , 定义了一个列表 fruits , 然后通过 for 循环对列表中的每一个元素进行遍历 , 并使用 print() 函数打印出来 。输出结果为:
applebananaorangewhile 循环:也是一种常见的循环结构 , 在满足某个条件时会一直执行 , 代码示例:
i = 1while i <= 5:print(i)i += 1这段代码中 , 首先定义一个变量 i 的初始值为 1 , 然后再 while 循环中设置一个条件 , 当 i 小于或等于 5 时 , 就一直执行循环体中的语句 。循环体中的语句是打印当前 i 的值 , 并将 i 的值加 1 。输出结果为:
【量化交易—Python基础语法与数据结构】12345另外再提一个 , for a in array循环表达式:用来遍历一个数据序列 , 比如列表、元组或字符串 , 具体使用方法如下:
array = [1, 2, 3, 4, 5]# 遍历列表for a in array:print(a)# 输出 1, 2, 3, 4, 5# 遍历元组my_tuple = (6, 7, 8, 9, 10)for a in my_tuple:print(a)# 输出 6, 7, 8, 9, 10# 遍历字符串my_str = 'hello'for a in my_str:print(a)# 输出 h, e, l, l, o以上代码示例展示了如何使用for a in array循环表达式来遍历不同类型的数据序列 。每次循环中 , 变量a被赋值为序列中的一个元素 , 程序依次对每个元素执行相同的操作 , 直到所有元素都被遍历完成 。
列表推导式
是Python语言用来从一个可迭代对象中创建列表的一种简介方式 。它由一个方括号包裹 , 包含一条或多条表达式 , 并可以在其中使用if语句和for循环 。例如 , 以下是使用列表推导式创建一组日期示例:
# 使用列表推导式生成2021年1月的所有日期dates = [f'2021-01-{d:02}' for d in range(1, 32)]# 打印结果print(dates)输出:
['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05', '2021-01-06', '2021-01-07', '2021-01-08', '2021-01-09', '2021-01-10', '2021-01-11', '2021-01-12', '2021-01-13', '2021-01-14', '2021-01-15', '2021-01-16', '2021-01-17', '2021-01-18', '2021-01-19', '2021-01-20', '2021-01-21', '2021-01-22', '2021-01-23', '2021-01-24', '2021-01-25', '2021-01-26', '2021-01-27', '2021-01-28', '2021-01-29', '2021-01-30', '2021-01-31']上面的代码中 , 使用了for循环来遍历1到31的数字 , 并结合f字符串格式化来生成日期字符串 , 最后使用列表推导式构建了一个包含所有日期的列表 。
为了对应交易日期与收盘价格 , 使用tuple元组来封装上面结构 , zip同时迭代多个序列 , 每次分别从一个序列中取一个元素 , 一旦其中某个序列到达结尾 , 则迭代宣告结束 。那么我们可以将每个日期和收盘价格封装为一个元组 , 然后使用zip()函数同时迭代这两个序列 , 代码示例:
dates = ('2021-01-01', '2021-01-02', '2021-01-03')prices = (128.8, 131.1, 129.5)data = zip(dates, prices)for d, p in data:print(d, p)输出结果为:
2021-01-01 128.82021-01-02 131.12021-01-03 129.5这样我们就可以在每个迭代中同时取出一个日期和一个收盘价格 , 一一对应地处理它们 , 而且在任何一个序列到达结尾时都会自动结束迭代 。同时 , 我们也可以通过data对象直接遍历所有元组 , 在每个迭代中处理每个日期和其对应的收盘价格 。另外还可以使用namedtuple来改进代码 , 使得元组中的元素具有更明确的含义和方便的访问方式 。例如:
推荐阅读
- 翡翠|行业快讯 | 2023平洲翡翠玉石夏季交易会开幕,5月23日开标!
- 星象|?(周运)Alex 12星座一周运势(5.22—5.28)
- 黑客必修:批处理常用网络命令和符号——网络命令
- 何超琼|何超琼李泽钜罕见同框——某种角度的必然
- 翡翠|标题:帝王绿翡翠的珍贵性与价值——如何鉴别市面上的真假帝王绿翡翠?
- 张柏芝|「家族基因难抹杀」——张柏芝乌龙事件深意探析
- 鲤鱼|钓鱼日记——2023年5月19日(巩华城夜钓)
- 连衣裙|如何穿出高校女老师范儿—黑色小香风连衣裙搭配黑色高跟鞋
- 刘三姐|“刘三姐”程春莲:用身体交易103次,敛财76万,37岁被执行枪决
- 火龙果|陈凯琳晒出与老公亲密照——爱你不只在五二零
