链表OJ

阅读 34

2024-06-24

从0到1 Python基础

文章目录

语法基础

  1. 变量:一个可以改变的量

    (1) 变量的命名规则:变量由字母、数字与下划线组成;第一个字母必须是下划线或者字母;不能是关键字

    (2)变量的声明:所有的变量都不需要声明,因为python会自动识别数据的类型

  2. 常量:一个不改变值的量,其实也是变量一般用大写字母组成的名称表示

  3. 查阅python的关键字

import keyword
print(keyword.kwlist)
  1. 数据类型

    • 数字
      • 整数型
      • 浮点型
      • 复数complex(a,b)
      • 布尔型(只有True和False)
    • 字符串
    • 列表
    • 元组
    • 字典
    • 集合
  2. 运算符

    • 算数运算符

      优先级:乘、除 > 加、减 ; 取余与乘除优先级相同 。

    • 逻辑运算符

      与 and

      或 or

      非 not

    • 身份运算符:判断两个变量的引用对象是否是同一个

      a. is

      b. not is

    • 成员运算符:判断某个值是否存在于序列当中(列表、元组、字符串)

      a. in

      b. not in

  3. 类型转换

    • 数字 -> 字符串 str(数字)

    • 字符串->数字

      int(字符串) #字符串中只有数字

      float(字符串)

    • 整数yu浮点数

      int(浮点数) #只保留了整数部分

      float(整数)

  4. print

    语法:print(变量1,变量2,变量3,····)

    ​ print(值列表,sep = “分隔符”,end = “结束符”,file = “文件对象”)

    file = open("D:\\hello.txt",'w',encoding="utf-8")
    print("从0到1快速上手",file = file)
    
  5. input

    语法:a = input()

    赋值

    python的多重赋值:可以同时为多个变量赋值

    • 基本用法

      a,b = 1,2
      
    • 交换变量的值

      x,y = y,x
      
    • 同时为多个变量赋值

      a,b,c = 1,2,3
      
    • 从序列中赋值

      #列表中的元素赋值
      a,b,c = [1,2,3]
      #解构元组给变量赋值
      first_name,second_name = ("Jenny","Danny")
      #结构字符串给变量赋值
      first_char,second_char = "HE"
      
    • 与函数返回值结合使用

      def get_min_max(numbers):
          return min(numbers), max(numbers)
      
      min_val, max_val = get_min_max([1, 2, 3, 4, 5])
      
    • 注意事项

      • 多重赋值要求右侧表达式的长度与左侧变量的数量相匹配。
      • 如果数量不匹配,Python会抛出 ValueError

结构流程控制

  1. if···elif···else

  2. while/ do···while

  3. for

    for i in range(n) #从0到n-1

    range(start,end,step) #[start,end)

列表与元组

  1. introduce 列表

    列表可以存储一组数据,且列表中的元素可以不同数据类型,且列表元素可以是一个列表。

    这也是列表与数组的不同,数组要求元素是同一数据类型。

    列表是python内置的数据类型,若要创建数组需要使用numpy模块

  2. 创建列表

    语法:列表名 = [元素1,元素2,元素3,···]

    #创建一个空表
    list1 = []
    #创建一个包含3个元素的列表
    list2 = ["red","green","gray"]
    #列表元素可以是不同数据类型
    list3 = ["red",1,True,2]
    #列表元素还可以是列表
    list4 = [[1,2],[3,4],[5,6]]
    
  3. 基本操作

    • 获取元素:通过下标

    • 修改元素:列表名[i] = 新值

      #将一个二维列表的行和列元素进行互换,然后存到另一个二维列表中,最后输出结果
      """
      a = [[1,2,3],[4,5,6]] -> b = [[1,2],[3,4],[5,6]]
      
      #错误代码
      a = [[1,2,3],[4,5,6]]
      b = []
      for i in range(len(a)):
          for j in range(len(a[i])):
              print(a[i][j])
      print(b)
      """
      a = [[1, 2, 3], [4, 5, 6]]
      b = []  # 用于存储转置后的矩阵
      
      # 假设a是一个非空的二维列表,且所有子列表长度相同
      for i in range(len(a[0])):  # 遍历列数,即a[0]的长度
          b.append([])  # 为b的每列创建一个空列表
      
      # 转置矩阵
      for i in range(len(a)):  # 遍历行
          for j in range(len(b)):  # 遍历列
              b[j].append(a[i][j])  # 交换行和列的元素
      
      print(b)
      
    • 增加元素

      insert(下标,值) #在列表任意位置插入元素
      append(新元素) #在列表末尾插入新元素
      
    • 删除元素

      #根据下标删除某一个元素
      del 列表名[i]
      #删除某一个元素,默认删除末尾元素
      列表名.pop(i)
      #根据值删除某一个元素
      列表名.remove("值")
      
  4. 获取列表长度:len(列表名)

  5. 获取元素个数:列表名.count(元素)

  6. 获取元素下标

    语法:列表名.index(元素)

  7. 合并列表

    • 语法:A.extend(B)

    将B列表合并到A列表中并且A列表已经被改变

    • C = A + B

    将A、B列表合成一个新的列表,并且A、B列表均未被改变

  8. 清空列表

    列表名.clear()

  9. 切片

    • 列表名[m:n] #截取范围[m,n)
    • 列表名[m:] #截取范围为m到结尾位置
    • 列表名[:n] #截取范围为开始到n-1
    • 列表名[:] #截取整个列表
  10. 遍历列表

    • for item in 列表名

    • enumerate()函数:可以在遍历列表的同时获得元素的下标

      语法:for index, item in enumerate(列表名)

  11. 检索列表:用来判断值是否在列表中

    item in 列表名

    item not in 列表名

  12. 颠倒顺序:列表名.reverse()

  13. 大小排序

    语法:列表名.sort(reverse = True或False)

  14. 数值计算

    max(列表)

    min(列表)

    sum(列表)

  15. 列表与字符串的互转

    • 列表转换为字符串: “连接符”.join(列表名)
    • 字符串转换为列表:列表名 = string.split(“分隔符”)
  16. 列表运算

    列表只有乘法和加法

    [1,2]*3 -> [1,2,1,2,1,2]
    ["红""橙""黄"]+[1,2,3] = ["红""橙""黄",1,2,3]
    
  17. 二维列表

  18. 元组

    元组是不能被改变的数据类型

    元组的创建:tuple = (元素1,元素2,元素3,·····)

  19. 实战题

    • 输入任意5个整数到一个列表中,然后求出该列表中的最大值,并输出这个最大值。

      nums = []
      for i in range(5):
          nums.append(int(input()))
      temp = 0
      for index,item in enumerate(nums):
          if index == 0:
              temp = item
          elif item > temp:
              temp = item
      
    • 输出星期数,输入一个数字(1~7),然后输出对应的星期数。

      weekdays = ["Friday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]
      i = int(input())
      print(weekdays[i-1])
      

字符串

  1. 多行字符串

  2. 原始字符串

    在字符串前面加上r或者R,表示这是一个原始字符串

    print("C:\northwest\northwind")
    """
    C:
    orthwest
    orthwind
    """
    print(r"C:\northwest\northwind)
    # C:\northwest\northwind
    
    
  3. 获取某一个字符:字符串名[n]

  4. 获取字符串长度:len(字符串)

  5. 统计字符的个数:count()

    语法:字符串名.count(字符)

  6. 获取字符下标:index()

    字符串名.index(子字符串)

  7. 截取字符串:字符串名[m:n]

  8. 替换字符串

    语法:字符串名.replace(old,new,n)

  9. 分割字符串

    语法:字符串名.split(“分隔符”)

    默认为空格,且空格次数不限

  10. 去除首位符号:strip()

    语法:字符串名.strip(指定字符) #去除字符串首尾指定的字符,默认空格

  11. 大小写转换

    • 大写转小写 :字符串名.lower()
    • 小写转大写 :字符串名.upper()
    • 大写转小写,小写转大写:字符串名.swapcase()
  12. 检索字符串:判断一个字符串中是否包含另一个字符串

    • A.find(B)

    • A.startwith(B)

    • A.endwith(B)

  13. 拼接字符串

    • "+"来实现

    • %s

      可以使用“%s”来实现字符串的拼接,也就是字符串的格式化

      print("绿叶学习网成立于%s年"%2015)
      
    • 字符串.format()

      print("{0}成立于{1}年".format("绿叶学习网",2015))
      
  14. 类型转换

    • 将“元组”或“字符串”转换为一个列表:list()
    • 将“列表”或“字符串”转换为一个元组:tuple()
  15. 实战演练

    #统计单词个数
    string = "As we know,rome was not built in a day"
    count = 0
    for i in string:
        if i == ' ' or i == ',':
            count += 1
    print(count+1)
    
    
    #将首字母转换为大写
    string = "a friend in need is a friend indeed"
    strs = string.split()
    for index,item in enumerate(strs):
        strs[index] = item[0].upper()+item[1:]
    print(" ".join(strs))
    
    
    #方法二
    string = "a friend in need is a friend indeed"
    result = ""
    for i in len(string):
        if i == 0:
            result += string[i].upper()
        else:
            if string[i-1] == ' ':
                result += string[i].upper()
            else:
                result += string[i]
    

字典与集合

  1. 字典的创建

    语法:字典名 = {键1:值1,键2:值2,·····}

  2. 基本操作

    • 获取某个键的值

      语法:dict.get(key) dict[key]

    • 修改某个键的值

      语法:dict[key] = value

    • 增加键值对

      语法:dict[key] = value

    • 删除键值对

      语法:del dict[key] = value

  3. 获取长度:len(dict)

  4. 清空字典:dict.clear()

  5. 复制字典:dict.copy()

  6. 检索字典

    语法:用来判断某个键是否“存在”与字典中

    key in dict

    key not in dict

  7. 获取键或值

    • 字典.keys():获取所有的键
    • 字典.values():获取所有的值
    • 字典.items():获取所有的键和值
  8. 集合操作

    • 交集 {} & {}
    • 并集 {} | {}
    • 差集 {} - {}
  9. 实战题

初始函数

数学计算

  1. 求绝对值:abs()

  2. 四舍五入:

    语法:round(x,n)

  3. 取整运算

    • 向上取整 ceil()
    • 向下取整 floor()
  4. 平方根运算 sqrt()

  5. 圆周率 math.pi

  6. 生成随机数

    • 随机整数

      语法:random.randint(x,y)

      ​ random.randrange(x,y,step)

    • 随机浮点数

      语法:random.random() 生成0~1的随机整数

      ​ random.uniform(x,y) 生成n∈[x,y)的随机整数

    • 随机序列

      语法:random.choice(seq)

      ​ random.sample(seq,n)

      ​ random.shuffle(list)

日期时间

  1. time模块

    • 获取时间

      time() 获取时间戳

      localtime(时间戳) 将时间戳转换为本地时间,返回的是struct_time元组

      strftime(格式化字符串,本地时间) 将本地时间格式化为指定格式

    • 格式化时间

    ​ time.strftime(format,tuple)

    符号说明
    %Y
    %m
    %d
    %H小时
    %M分钟
    %s
    %a简写星期
    %A完整星期
    import time
    local = time.localtime(time.time())   #local是一个struct_time元组
    year = time.strftime("%Y",local)
    month = time.strftime("%m",local)
    
    • struct_time元组的属性
属性说明
tm_year
tm_mon
tm_mday
tm_hour
tm_min
tm_sec
tm_wday星期
tm_yday一年第几天
tm_isdst夏令时
  1. datetime模块

    • 获取日期时间

      语法:datetime.datetime.方法名()

    • 设置日期时间

      语法:datetime.datetime(year,month,day,hour,minute,second)

精彩评论(0)

0 0 举报