python与C++的一些区别以及一些新的东西

最爱丁珰 / 2024-10-14 / 原文

目录
  • 第一个Python程序
    • 输入与输出
  • Python基础
    • 数据类型和变量
    • 字符串和编码
    • 使用list和tuple
    • 条件判断
    • 模式匹配
    • 循环
    • 使用dict和set

第一个Python程序

输入与输出

image

image

image

image

Python基础

数据类型和变量

image

image

image

image

image

image

image

image

image

image

image

image

image

image

字符串和编码

image

image

image

image

image

第一行代码的输出如下

image

解释如下:

  • '%2d-%02d' 是格式化字符串。
    • %2d 表示一个整数(d代表十进制),它至少占用2个字符的宽度。如果整数不足2位,则默认在左侧填充空格以达到2位的宽度。
    • -%02d 表示一个整数,它至少占用2个字符的宽度,如果整数不足2位,则在左侧填充0以达到2位的宽度。注意,-是字符串的一部分,用于在两个数字之间添加连字符。

image

image

image

image

使用list和tuple

这里直接全部看原文,全是新东西

条件判断

image

image

image

image

image

模式匹配

image

image

image

image

image

也就是使用第一行的args会匹配到第二个case,使用第二行的args会匹配到第三个case,使用第三行的args会匹配到第一个case

这里可能会产生一个疑问,就是为什么这里不用在后面写上一个if而是可以直接变量绑定了?实际上,tuplelist都可以这么做,比如下面的代码是OK的

point = (1, 2)  
  
match point:  
    case (0, 0):  
        print("Origin")  
    case (x, 0):  
        print(f"Point on the x-axis: {x}")  
    case (0, y):  
        print(f"Point on the y-axis: {y}")  
    case (x, y):  
        print(f"Point: ({x}, {y})")

循环

image

image

如果执行print(range(5))会输出range(0,5)

image

image

image

使用dict和set

Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

image

image

image

image

当然如果存在,get()就返回键对应的值

image

image

也就是说list真的是链表而不是数组

image

也就是说,对于一个作为键的对象(也就是一个变量,注意在Pyhton中,一切皆对象)指向的值如果改变了的话,我们重新计算这个对象的hash值肯定就会改变,就没有办法在字典中找到这个键对应的值了(实际上在Python中,可变对象的哈希值是不可计算的)

image

image

image

在Python中可变对象的哈希值是不可计算的,而set需要通过哈希值去判重,一个不可计算的东西怎么能用呢?所以set不可以放入可变对象。并且有如下代码

a = (1, 2, 3)
b = (1, [2, 3])
s = set()
s.add(a)
print(s)
#没问题,正常输出{(1,2,3)}
ss = set(b)
print(ss)
#不行,因为b里面的[2,3]是一个可变的元素,所以会报错
#剩下换成dict再试一遍同理

image

image

image

image