• 【大麦小米学量化】量化基础之Python编程(小白入门第一课)


    系列文章目录

    高频头男朋友

    小米一边吃着冰激凌,一般若无其事地问大麦:“Hi,我说大麦哥哥,你学Python想干嘛呀?”
    大麦:“我说小米妹妹,哥做的事儿,说出来,你也不懂!”
    “不懂?!你没说怎么知道我不懂?”,小米不屑地看着大麦,眼神中流露出好奇和杀气。
    “跟你说吧,我学Python是研究量化交易呢”,大麦随口说道,可把小米妹妹搞糊涂了。
    紧接着大麦又补充说:“量化交易,就是通过数据计算生成交易信号来交易,你们觉得在手机APP上交易很了不起吧!其实,我们都不用人盯盘就可以让电脑自动交易,不懂了吧!”
    小米轻蔑的噘嘴一笑道:“你懂!你懂!就你懂!我也是学过计算机的,谁怕谁,我也要学量化交易,不就是计算机编程嘛,我的高频头男朋友比你厉害!”
    “高频头是谁!”
    “这你都不知道,还编程呢,ChatGPT啊!”
    “额,额,额,这也行!”,大麦一时语塞,竟无言以对。

    前言

    学习时间:对于初学编程者,大概需要一周时间;对于有编程基础的老手,看个人情况,也许一下午就OK了。
    学习目标:掌握Python的基本语法,可以灵活运用list、dict,掌握时间转化和文件操作。
    学习难点:函数、模块,以及list、dict、时间转换等。

    一、Python是什么?

    Python(英国发音:/ˈpaɪθən/;美国发音:/ˈpaɪθɑːn/)是一种计算机编程语言,它的创始人为Guido van Rossum。Python是一种通用的编程语言,旨在让人们更容易地编写代码。它是一种高级编程语言,意味着它比汇编语言更加抽象,更关注问题的解决,而非底层操作。

    Python的设计目标是让代码更易于阅读和理解。它支持多种编程范式,包括面向对象、过程式和函数式编程。此外,Python是一种解释型语言,这意味着它可以在运行时逐行解释,这使得调试变得更容易。

    Python被广泛应用于各种领域,包括Web开发、数据分析、人工智能、机器学习、网络编程、自动化脚本等。它拥有强大的社区和丰富的库,使得开发者可以快速解决问题并开发出高效的应用程序。

    Python的语法简洁明了,易于学习。它的学习曲线相对平缓,使得初学者可以快速上手编写简单的程序。同时,Python也是一种非常强大的编程语言,可以用于开发大型的复杂应用程序。

    二、Python基本语法

    Python是一种高级编程语言,它的基本语法包括数据类型、变量、运算符、表达式、控制结构、函数、模块等。下面是对这些基本语法的一个简单介绍:

    1. 数据类型:

    Python支持多种数据类型,包括整数(int)、浮点数(float)、布尔值(bool)、字符串(str)、列表(list)、元组(tuple)、字典(dict)等。

    整数(int):表示整数值,没有限制大小。例如:10、-20、0等。
    浮点数(float):表示带有小数点的数值,包括正数和负数。例如:3.14、-2.56、0.0等。
    布尔值(bool):表示逻辑值,只有两个取值,即True和False。
    字符串(str):表示文本数据,可以使用单引号(')或双引号(")括起来。例如:“Hello, world!”、'python’等。
    列表(list):表示有序的元素集合,可以使用方括号([])括起来,元素之间用逗号分隔。例如:[1, 2, 3, ‘a’, ‘b’, ‘c’]等。
    元组(tuple):与列表类似,表示有序的元素集合,但元组是不可变的,即不能修改其中的元素。元组使用圆括号(())括起来,元素之间用逗号分隔。例如:(1, 2, 3, ‘a’, ‘b’, ‘c’)等。
    字典(dict):表示键值对的集合,使用大括号({})括起来,键值对之间用冒号分隔,每个键值对之间用逗号分隔。例如:{‘name’: ‘Alice’, ‘age’: 20}等。

    后面我们会重点介绍list和dict的使用,这两个在量化交易中会频繁使用,需要重点介绍。

    2. 变量:

    Python中的变量是一种存储数据的容器,可以存储各种类型的数据。变量使用变量名来引用,变量名必须以字母或下划线开头,不能使用数字开头。变量在声明后可以存储任何类型的数据。

    在Python中,声明变量的方式很简单,只需要使用变量名(变量名相当于对变量的引用)和赋值运算符(=)来给变量赋值。例如:

    x = 10   # 声明一个整数类型的变量x,并赋值为10
    y = 3.14   # 声明一个浮点数类型的变量y,并赋值为3.14
    z = "hello"   # 声明一个字符串类型的变量z,并赋值为"hello"
    
    • 1
    • 2
    • 3

    在Python中,变量名是区分大小写的,因此x和X是两个不同的变量。此外,Python具有动态类型系统,这意味着变量的类型可以随时改变。例如:

    x = 10   # 声明一个整数类型的变量x,并赋值为10
    print(x)   # 输出10
    
    x = "hello"   # 将变量x的类型改为字符串,并赋值为"hello"
    print(x)   # 输出"hello"
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在Python中,还可以使用变量名来访问变量的值。例如:

    x = 10
    print(x)   # 输出10
    
    print(y)   # 如果y未被声明,则会报错
    z = "hello"
    print(z)   # 输出"hello"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    以上是Python变量的简单介绍和举例,希望能对您有所帮助。

    3. 运算符:

    Python支持多种运算符,包括算术运算符(如+、-、*、/等)、比较运算符(如==、!=、<、>等)、逻辑运算符(如and、or、not等)和位运算符(如&、|、^、~等)。Python中有很多常用的运算符,下面是对这些运算符的简单介绍和举例:

    1. 算术运算符:
      +:加法,例如2 + 3 = 5。
      -:减法,例如5 - 3 = 2。
      *:乘法,例如2 * 3 = 6。
      /:除法,例如6 / 3 = 2。
      %:取余数,例如7 % 2 = 1。
      **:乘方,例如2 ** 3 = 8。
    2. 比较运算符:
      ==:等于,例如2 == 3(False)。
      !=:不等于,例如2 != 3(True)。
      <:小于,例如2 < 3(True)。
      =>:大于,例如2 > 3(False)。
      <=:小于等于,例如2 <= 3(True)。
      >=:大于等于,例如2 >= 3(False)。
    3. 逻辑运算符:
      and:逻辑与,例如True and False(False)。
      or:逻辑或,例如True or False(True)。
      not:逻辑非,例如not True(False)。
    4. 位运算符:
      &:按位与,例如10 & 13(10)。
      |:按位或,例如10 | 13(13)。
      ^:按位异或,例如10 ^ 13(7)。
      ~:按位取反,例如~10(-11)。
    5. 赋值运算符:
      =:赋值,例如x = 10。
      +=:加并赋值,例如x += 5相当于x = x + 5。
      -=:减并赋值,例如x -= 5相当于x = x - 5。
      *=:乘并赋值,例如x *= 5相当于x = x * 5。
      /=:除并赋值,例如x /= 5相当于x = x / 5。
      %=:取余并赋值,例如x %= 5相当于x = x % 5。
      **=:乘方并赋值,例如x **= 5相当于x = x ** 5。
    6. 其他运算符:
      in:成员运算符,用于判断一个值是否在序列中,例如’a’ in [‘a’, ‘b’, ‘c’](True)。
      not in:成员运算符,用于判断一个值是否不在序列中,例如’d’ not in [‘a’, ‘b’, ‘c’](True)。
      is:身份运算符,用于判断两个引用是否指向同一个对象,例如a = [1, 2, 3]; b = a; print(a is b)(True)。
      is not:身份运算符,用于判断两个引用是否不指向同一个对象,例如a = [1, 2, 3]; b = a[:]; print(a is not b)(True)。

    4. 表达式:

    表达式是由操作数和运算符组成的语法结构,可以用于计算和表示数值。Python中有很多常用的表达式,下面是对这些表达式的简单介绍和举例:

    1. 算术表达式:
      绝对值表达式:abs(-2) -> 2。
      取整(向下取整)表达式:int(3.14) -> 3。
      取整(向上取整)表达式:ceil(3.14) -> 4。
      四舍五入表达式:round(3.14) -> 3。
      取余数表达式:divmod(10, 3) -> (3, 1)。
    2. 关系表达式:
      不等于表达式:2 != 3(True)。
      大于表达式:3 > 2(True)。
      小于表达式:2 < 3(True)。
      大于等于表达式:3 >= 2(True)。
      小于等于表达式:2 <= 3(True)。
    3. 逻辑表达式:
      and:逻辑与,例如True and False(False)。
      or:逻辑或,例如True or False(True)。
      not:逻辑非,例如not True(False)。
    4. 位运算表达式:
      按位与表达式:10 & 13(10)。
      按位或表达式:10 | 13(13)。
      按位异或表达式:10 ^ 13(7)。
      按位取反表达式:~10(-11)。
    5. 赋值表达式:
      x += y 等价于 x = x + y。
      x -= y 等价于 x = x - y。
      x *= y 等价于 x = x * y。
      x /= y 等价于 x = x / y。
      x %= y 等价于 x = x % y。
      x **= y 等价于 x = x **y。
    6. 其他常用表达式:
      in/not in:成员运算符,用于判断一个值是否在序列中。
      is/is not:身份运算符,用于判断两个引用是否指向同一个对象。
    7. 三目运算符(条件表达式):
      例如a > b > c的运算是先比较a和b,得到一个布尔值,然后再比较这个布尔值和c,例如a > b > c为True时,实际运算过程相当于a > b and b > c。

    5. 控制结构:

    Python支持多种控制结构,包括条件语句(if)、循环语句(for、while)、跳转语句(break、continue)等。Python中有很多常用的控制结构,下面是对这些控制结构的简单介绍和举例:

    1. if语句:
      示例1:如果x大于0,则输出"x是正数"。
    x = 10
    if x > 0:
        print("x是正数")
    
    • 1
    • 2
    • 3

    示例2:如果x等于0,则输出"x是零",否则输出"x不是零"。

    x = 0
    if x == 0:
        print("x是零")
    else:
        print("x不是零")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. elif语句:
      示例1:如果x大于0,则输出"x是正数",否则如果x等于0,则输出"x是零"。
    x = 10
    if x > 0:
        print("x是正数")
    elif x == 0:
        print("x是零")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. else语句:
      示例1:如果x大于0,则输出"x是正数",否则输出"x不是正数"。
    x = -10
    if x > 0:
        print("x是正数")
    else:
        print("x不是正数")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. while语句:
      示例1:当x小于10时,输出x的值,然后将x加1。
    x = 0
    while x < 10:
        print(x)
        x += 1
    
    • 1
    • 2
    • 3
    • 4
    1. for语句:
      示例1:打印列表中的所有元素。
    my_list = [1, 2, 3, 4, 5]
    for element in my_list:
        print(element)
    
    • 1
    • 2
    • 3
    1. break语句:
      示例1:当x等于5时,跳出循环。
    x = 0
    while True:
        print(x)
        if x == 5:
            break
        x += 1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. continue语句:
      示例1:当x是奇数时,跳过本次循环。
    x = 0
    while True:
        if x % 2 == 0:
            print(x)
        else:
            continue
        if x == 5:
            break
        x += 1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    1. pass语句
      pass 是空语句,是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句。
    x = 10
    if x > 0:
        print("x是正数")
    elif x == 0:
        print("x是零")
    else:
    	pass
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    6. 函数:

    函数是一段可重用的代码块,可以用于实现特定的功能。函数可以接受参数并返回值。Python常用函数的介绍和举例如下:

    Python常用内置函数介绍和举例:

    1. len(): 计算序列的长度,例如len(‘hello’)输出5。
    2. max(): 返回序列中的最大值,例如max([1, 2, 3, 4, 5])输出5。
    3. min(): 返回序列中的最小值,例如min([1, 2, 3, 4, 5])输出1。
    4. sum(): 求序列中所有元素的和,例如sum([1, 2, 3, 4, 5])输出15。
    5. sorted(): 对序列进行排序并返回排序后的序列,例如sorted([5, 3, 1, 4, 2])输出[1, 2, 3, 4, 5]。
    6. reversed(): 返回序列的反向序列(逆序),例如list(reversed([1, 2, 3, 4, 5]))输出[5, 4, 3, 2, 1]。
    7. map(): 将函数应用于序列的每个元素,并返回一个新的序列,例如list(map(lambda x: x*2, [1, 2, 3, 4, 5]))输出[2, 4, 6, 8, 10]。
    8. filter(): 根据条件过滤序列中的元素并返回一个新的序列,例如list(filter(lambda x: x%2==0, [1, 2, 3, 4, 5]))输出[2, 4]。
    9. zip(): 将多个序列打包成一个元组列表,例如list(zip([1, 2], [3, 4]))输出[(1, 3), (2, 4)]。
    10. range(): 生成一个整数序列,例如range(1, 6)输出[1, 2, 3, 4, 5]。

    这些函数都是Python的内置函数,可以用于处理序列、集合、字典等数据类型。在实际开发中,我们也可以自己定义函数来实现特定的功能。

    Python中自定义函数是一种用户自己编写的函数,可以用于封装特定的代码逻辑,以便在其他地方重复使用。

    Python自定义函数的介绍和举例

    下面是一个简单的Python自定义函数的示例:

    def square(num):
        """
        计算给定数字的平方
        :param num: 数字
        :return: 数字的平方
        """
        result = num ** 2
        return result
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这个例子中,我们定义了一个名为square的函数,它接受一个参数num,并返回该数字的平方。函数的定义以关键字def开始,后面跟着函数名和参数列表。在函数体中,我们编写了计算平方的代码逻辑。最后,我们使用return语句返回计算结果。

    要调用这个函数并计算某个数字的平方,可以使用以下代码:

    my_num = 5
    squared_num = square(my_num)
    print(squared_num)  # 输出25
    
    • 1
    • 2
    • 3

    在这个例子中,我们将数字5赋值给变量my_num,然后调用square函数并传入my_num作为参数。函数返回计算结果,我们将其赋值给变量squared_num,并使用print语句输出结果。

    除了上述示例,还可以根据实际需求自定义各种类型的函数,例如接受多个参数的函数、返回多个值的函数、带默认参数的函数、可变参数的函数等等。自定义函数可以大大提高代码的可重用性和可维护性,使程序更加模块化和高效。

    7. 模块:

    模块是一组Python代码的集合,可以包含函数、类和变量等。模块可以通过import语句导入并使用其中的代码。

    Python模块的介绍和分类

    Python模块(Module)是Python代码的基本单位,用于组织和封装特定功能或相关代码。模块可以包含变量、函数、类等Python对象,以便在其他Python程序中使用。

    模块的创建通常以.py文件的形式存在,其中包含了模块的代码。通过将功能和代码组织到不同的模块中,可以提高代码的可重用性、可维护性和可测试性。

    下面是一些Python模块的例子:

    1. 标准库模块:Python提供了丰富的标准库模块,这些模块涵盖了文件处理、网络编程、数据库访问、图形界面开发等众多方面。例如,os模块提供了操作系统相关的函数,math模块提供了数学计算相关的函数。
    2. 自定义模块:用户可以根据需要创建自定义模块,并将相关的函数和变量封装在其中。自定义模块可以是大型项目中的一部分,也可以是独立的可重用代码片段。例如,可以创建一个名为my_module.py的文件,其中包含一些自定义函数和类。
    3. 第三方模块:除了标准库之外,还有大量的第三方模块可供使用,这些模块涵盖了各种不同的领域。可以通过安装这些模块并将其导入到Python程序中,以使用其中的函数、类或工具。例如,numpy是一个用于科学计算的第三方模块,提供了高效的数学计算功能。
    4. 导入模块:要使用一个模块,需要在Python程序中使用import语句将其导入。导入模块后,可以访问其中的变量、函数和类等对象。例如:
    import math
    print(math.pi)  # 输出3.141592653589793
    
    • 1
    • 2

    上述代码导入了math模块,并打印了其中的pi变量。

    总之,模块是Python代码的重要组成部分,用于封装特定功能或相关代码,并可以在不同的Python程序中重复使用。

    Python模块的应用举例

    1. 文件操作:使用os模块可以轻松地进行文件和目录操作,例如获取文件信息、读取文件内容、创建目录等。
    import os
    
    # 获取文件信息
    stat_info = os.stat('example.txt')
    print(stat_info.st_size)  # 输出文件大小
    
    # 读取文件内容
    with open('example.txt', 'r') as file:
        content = file.read()
    print(content)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    1. 网络编程:使用socket模块可以进行网络通信编程,例如创建TCP连接、发送数据等。
    import socket
    
    # 创建TCP连接
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client_socket.connect(('localhost', 8000))
    
    # 发送数据
    message = 'Hello, server!'
    client_socket.send(message.encode())
    
    # 接收数据
    response = client_socket.recv(1024).decode()
    print(response)
    
    # 关闭连接
    client_socket.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    1. 数据库访问:使用sqlite3模块可以方便地操作SQLite数据库,例如创建数据库连接、执行SQL查询等。
    import sqlite3
    
    # 创建数据库连接
    conn = sqlite3.connect('example.db')
    cursor = conn.cursor()
    
    # 创建表
    cursor.execute('''CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INT)''')
    
    # 插入数据
    cursor.execute("INSERT INTO users VALUES (1, 'Alice', 25)")
    cursor.execute("INSERT INTO users VALUES (2, 'Bob', 30)")
    
    # 查询数据
    cursor.execute("SELECT * FROM users")
    result = cursor.fetchall()
    print(result)
    
    # 关闭连接
    conn.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    1. 图形界面开发:使用tkinter模块可以创建GUI应用程序,例如创建窗口、添加控件、处理事件等。
    import tkinter as tk
    
    # 创建窗口
    window = tk.Tk()
    window.title('Example App')
    window.geometry('300x200')
    
    # 添加标签控件
    label = tk.Label(text='Hello, World!')
    label.pack()
    
    # 处理按钮点击事件
    def button_clicked():
        label.config(text='Button clicked!')
        label.pack()
        print('Button clicked!')
        
    button = tk.Button(text='Click Me!', command=button_clicked)
    button.pack()
    
    # 进入主循环
    window.mainloop()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    Python模块的引用方法举例

    要引用Python模块中的函数或变量,需要使用import语句或from…import…语句。以下是引用方法的举例:

    1. 导入整个模块:
    import math
    
    • 1

    这样就可以使用math模块中的函数,例如:

    result = math.sqrt(16)  # 调用math模块的sqrt函数
    print(result)           # 输出4.0
    
    • 1
    • 2
    1. 导入模块中的部分函数或变量:
    from math import sqrt, ceil
    
    • 1

    这样就可以直接使用sqrt和ceil函数,而不需要通过模块名引用,例如:

    result1 = sqrt(16)      # 调用math模块的sqrt函数
    result2 = ceil(3.14)    # 调用math模块的ceil函数
    print(result1)          # 输出4.0
    print(result2)          # 输出4.0
    
    • 1
    • 2
    • 3
    • 4
    1. 在一个模块中导入另一个模块:
    import module1
    from module2 import function1, function2
    
    • 1
    • 2

    这样就可以使用module1中的所有函数和变量,以及module2中的function1和function2函数。

    三、list 的用法介绍

    Python中的列表(list)是一种非常常用的数据结构,它是一种有序的集合,可以存储任意类型的数据。下面我们将介绍一些关于Python列表的基本使用方法。

    创建列表

    创建列表非常简单,只需要使用中括号 [] 并将元素包含在内,元素之间用逗号隔开。

    my_list = [1, 2, 3, 'a', 'b', 'c']
    
    • 1

    访问列表元素

    要访问列表中的元素,可以使用索引。索引是从0开始的,表示元素在列表中的位置。

    print(my_list[0])  # 输出:1
    print(my_list[3])  # 输出:'a'
    
    • 1
    • 2

    修改列表元素

    要修改列表中的元素,可以直接赋值。

    my_list[0] = 100
    print(my_list)  # 输出:[100, 2, 3, 'a', 'b', 'c']
    
    • 1
    • 2

    添加元素到列表

    要向列表中添加元素,可以使用 append() 方法。

    my_list.append(4)
    print(my_list)  # 输出:[100, 2, 3, 'a', 'b', 'c', 4]
    
    • 1
    • 2

    从列表中删除元素

    要从列表中删除元素,可以使用 remove() 方法,该方法会删除第一个匹配的元素。如果要删除指定位置的元素,可以使用 del 语句。

    my_list.remove(100)  # 删除元素100
    print(my_list)  # 输出:[2, 3, 'a', 'b', 'c', 4]
    
    del my_list[0]  # 删除位置0的元素
    print(my_list)  # 输出:[3, 'a', 'b', 'c', 4]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    列表切片

    列表切片是指从列表中选择一部分元素。语法是 list[start:end],其中 start 是切片开始的索引(包括该索引),end 是切片结束的索引(不包括该索引)。注意,切片是从左到右的。

    my_list = [0, 1, 2, 3, 4, 5]
    print(my_list[1:4])  # 输出:[1, 2, 3]
    
    • 1
    • 2

    循环遍历列表

    可以使用 for 循环来遍历列表中的所有元素。

    my_list = [0, 1, 2, 3, 4, 5]
    for element in my_list:
        print(element)
    
    • 1
    • 2
    • 3

    列表长度

    可以使用 len() 函数来获取列表的长度。

    my_list = [0, 1, 2, 3, 4, 5]
    print(len(my_list))  # 输出:6
    
    • 1
    • 2

    四、dict的用法介绍

    Python中的字典(dict)是一种非常常用的数据结构,它是一种无序的键值对集合,可以通过键来访问对应的值。下面我们将介绍一些关于Python字典的基本使用方法。

    创建字典

    创建字典非常简单,只需要使用大括号 {} 并将键值对用冒号 : 分割,各个键值对之间用逗号 , 隔开。

    my_dict = {'name': 'Alice', 'age': 25, 'gender': 'female'}
    
    • 1

    访问字典元素

    要访问字典中的元素,可以使用键来索引。如果键不存在于字典中,则会抛出 KeyError 异常。为了避免异常,可以使用 get() 方法来获取指定键的值,如果键不存在则返回一个默认值。

    print(my_dict['name'])  # 输出:'Alice'
    print(my_dict.get('age'))  # 输出:25
    print(my_dict.get('address', 'unknown'))  # 输出:'unknown',因为'address'键不存在
    
    • 1
    • 2
    • 3

    修改字典元素

    要修改字典中的元素,可以直接赋值。如果键不存在,则会创建一个新的键值对。

    my_dict['age'] = 26
    print(my_dict)  # 输出:{'name': 'Alice', 'age': 26, 'gender': 'female'}
    
    • 1
    • 2

    添加字典元素

    要向字典中添加元素,可以直接赋值。如果键不存在,则会创建一个新的键值对。

    my_dict['address'] = '123 Main St.'
    print(my_dict)  # 输出:{'name': 'Alice', 'age': 26, 'gender': 'female', 'address': '123 Main St.'}
    
    • 1
    • 2

    删除字典元素

    要删除字典中的元素,可以使用 del 语句。如果要删除整个字典,可以使用 del 语句或 pop() 方法。

    del my_dict['age']  # 删除键为'age'的元素
    print(my_dict)  # 输出:{'name': 'Alice', 'gender': 'female', 'address': '123 Main St.'}
    
    my_dict.pop('address')  # 删除键为'address'的元素,并返回其值
    print(my_dict)  # 输出:{'name': 'Alice', 'gender': 'female'}
    
    • 1
    • 2
    • 3
    • 4
    • 5

    字典推导式

    字典推导式是一种快速创建字典的方法,可以将一个列表或元组的元素转换为字典的键值对。其语法为 {key_expression for item in iterable}

    names = ['Alice', 'Bob', 'Charlie']
    ages = [25, 30, 35]
    gender = ['female', 'male', 'male']
    my_dict = {name: age + gender[i] for i, name in enumerate(names)}
    print(my_dict)  # 输出:{'Alice': '25female', 'Bob': '30male', 'Charlie': '35male'}
    
    • 1
    • 2
    • 3
    • 4
    • 5

    五、list、dict的相互转换

    1. 将list转换为dict

    将包含键值对的列表转换为字典,其中列表中的每个元素都是一个元组,包含两个元素,即键和值。

    my_list = [('apple', 2), ('banana', 3), ('orange', 4)]
    my_dict = dict(my_list)
    print(my_dict)  # 输出:{'apple': 2, 'banana': 3, 'orange': 4}
    
    • 1
    • 2
    • 3
    1. 将dict转换为list

    将字典转换为包含单个元素的列表,其中每个元素都是一个元组,包含字典中的键和值。

    my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
    my_list = list(my_dict.items())
    print(my_list)  # 输出:[('apple', 2), ('banana', 3), ('orange', 4)]
    
    • 1
    • 2
    • 3

    六、日期、时间及与字符串时间互相转换

    在Python中,我们经常需要处理日期和时间,以及将日期和时间转换为时间戳或从时间戳获取日期和时间。以下是一个关于如何在Python中进行日期、时间以及与时间戳互相转换的教程。

    导入相关模块

    首先,我们需要导入Python的datetime模块,该模块包含了许多处理日期和时间的类和方法。

    import datetime
    
    • 1

    获取当前日期和时间

    要获取当前日期和时间,我们可以使用datetime模块中的now()函数。

    current_datetime = datetime.datetime.now()
    print(current_datetime)
    
    • 1
    • 2

    将日期和时间格式化为字符串

    如果你想要将日期和时间格式化为特定的字符串格式,可以使用strftime()方法。以下是一些常用的格式化选项:

    • %Y:四位数的年份
    • %m:两位数的月份
    • %d:两位数的日期
    • %H:小时(24小时制)
    • %M:分钟
    • %S:秒
    • %f:微秒

    例如,要将当前日期和时间格式化为"年-月-日 时:分:秒"的格式,可以执行以下操作:

    current_datetime = datetime.datetime.now()
    formatted_datetime = current_datetime.strftime("%Y-%m-%d %H:%M:%S")
    print(formatted_datetime)
    
    • 1
    • 2
    • 3

    将字符串解析为日期和时间

    如果有一个字符串表示日期和时间,并且该字符串的格式与strptime()方法的格式化字符串相匹配,则可以将该字符串解析为日期和时间对象。以下是一些示例:

    string_datetime = "2023-07-06 15:30:00"
    parsed_datetime = datetime.datetime.strptime(string_datetime, "%Y-%m-%d %H:%M:%S")
    print(parsed_datetime)
    
    • 1
    • 2
    • 3

    将日期和时间转换为时间戳

    我们可以使用datetime对象的timestamp()方法将其转换为时间戳。时间戳是从1970年1月1日午夜(UTC)开始的秒数。

    current_datetime = datetime.datetime.now()
    timestamp = current_datetime.timestamp()
    print(timestamp)
    
    • 1
    • 2
    • 3

    将时间戳转换为日期和时间

    要从时间戳获取日期和时间,我们可以使用datetime模块中的fromtimestamp()函数。

    timestamp = 1695483600  # 这是一个示例时间戳
    parsed_datetime = datetime.datetime.fromtimestamp(timestamp)
    print(parsed_datetime)
    
    • 1
    • 2
    • 3

    以上就是在Python中进行日期、时间以及与时间戳互相转换的基本操作。

    六、文件读写

    在Python中,文件读写是一个常见的操作。下面简要介绍一下基本的文件读写方法,涵盖了不同的场景和操作。

    打开文件

    在Python中,使用open()函数打开文件。这个函数需要传递文件路径和模式作为参数。模式可以是以下几种:

    • ‘r’: 只读模式,打开文件用于读取。
    • ‘w’: 写入模式,打开文件用于写入。如果文件已经存在,它将被清空。如果文件不存在,将创建一个新文件。
    • ‘a’: 追加模式,打开文件用于在末尾追加内容。如果文件不存在,将创建一个新文件。
    • ‘x’: 创建模式,创建一个新文件。如果文件已经存在,将返回错误。

    示例:

    file = open('example.txt', 'r')  # 打开一个名为'example.txt'的文件用于读取
    
    • 1

    读取文件

    有多种方法可以读取文件内容。以下是几种常见的方法:

    • read():一次性读取文件的全部内容。
    • readline():一次读取文件的一行内容。
    • readlines():一次读取文件的全部内容,并按行存储为列表。

    示例:

    file = open('example.txt', 'r')  # 打开一个名为'example.txt'的文件用于读取
    content = file.read()  # 读取文件的全部内容
    print(content)  # 打印文件的全部内容
    file.close()  # 关闭文件
    
    • 1
    • 2
    • 3
    • 4

    写入文件

    要写入文件,可以使用write()方法。需要注意的是,使用写入模式打开文件时,如果文件已经存在,它的内容将被清空。如果要追加内容而不是覆盖原有内容,请使用追加模式。

    示例:

    file = open('example.txt', 'w')  # 打开一个名为'example.txt'的文件用于写入
    file.write('Hello, world!')  # 将字符串'Hello, world!'写入文件
    file.close()  # 关闭文件
    
    • 1
    • 2
    • 3

    追加内容到文件

    要追加内容到文件,可以使用追加模式打开文件,并使用write()方法写入内容。

    示例:

    file = open('example.txt', 'a')  # 打开一个名为'example.txt'的文件用于追加
    file.write('\nHello again, world!')  # 在文件的末尾追加字符串'\nHello again, world!'
    file.close()  # 关闭文件
    
    • 1
    • 2
    • 3

    关闭文件

    在使用完文件后,应该及时关闭它。这可以释放系统资源并确保文件的完整性和一致性。关闭文件可以使用close()方法。

    示例:

    file = open('example.txt', 'r')  # 打开一个名为'example.txt'的文件用于读取
    content = file.read()  # 读取文件的全部内容
    print(content)  # 打印文件的全部内容
    file.close()  # 关闭文件
    
    • 1
    • 2
    • 3
    • 4

    使用with语句操作文件

    为了确保文件在使用后正确关闭,可以使用with语句来操作文件。这将自动关闭文件,无需手动调用close()方法。

    示例:

    with open('example.txt', 'r') as file:  # 使用with语句打开文件并赋值给变量file,无需手动关闭文件
        content = file.read()  # 读取文件的全部内容
        print(content)  # 打印文件的全部内容
    
    • 1
    • 2
    • 3

    总结

    本篇文章,内容虽有些长,但很多我们知道这种表达是什么意思即可,不会的或忘了过来查就行。由于篇幅有限,Python还有很多应用技巧和知识,想学习更多,读者可自行深入搜索。

    这里对量化交易所需的Python基础知识进行了展示和示例,方便大家后续跟进学习量化。量化所需要Python知识不多,更多的是通过list、dict、pandas对数据进行加工处理,再结合逻辑控制语句,生成交易信号,并调用API完成下单操作。

    掌握了本篇知识,想必已经可以应付基本的Python代码读写。后续我们将结合不同的量化框架来学习量化交易。

  • 相关阅读:
    C# netcore 创建WebService(SoapCore)
    flutter 身兼数职的getx —— 简介
    小程序如何设置各种时间参数
    需求侧电力负荷预测(Matlab代码实现)
    【网络安全】SSL Pinning及其绕过
    Java观察者模式之总有你想不到的知识
    文件预览服务器kkfileview安装部署(linux 版)
    今天聊一聊高性能系统架构设计是什么样的
    微服务Spring Boot 整合Redis 阻塞队列实现异步秒杀下单
    【算法训练-二分查找 一】二分查找、在排序数组中查找元素的第一个和最后一个位置
  • 原文地址:https://blog.csdn.net/popboy29/article/details/132462311