notes

参考Python100Days

整型(int):

Python 中可以处理任意大小的整数 1. 二进制(如0b100,换算成十进制是4) 2. 八进制(如0o100,换算成十进制是64) 3. 十进制(100) 4. 十六进制(0x100,换算成十进制是256)

赋值运算符:=

我们称之为海象运算符,大家可以猜一猜它为什么叫这个名字。海象运算符也是将运算符右侧的值赋值给左边的变量,与赋值运算符不同的是,运算符右侧的值也是整个表达式的值

  1. 逻辑运算符有三个,分别是andornot ; 比较运算符的优先级高于赋值运算符
  2. ** 为幂运算

分支结构:

if elif else

  1. match-case: 1. match x: case 0: case 1: case _: 2. 带有_case语句在代码中起到通配符的作用,如果前面的分支都没有匹配上,代码就会来到case _case _的是可选的,并非每种分支结构都要给出通配符选项。如果分支中出现了case _,它只能放在分支结构的最后面,如果它的后面还有其他的分支,那么这些分支将是不可达的。 3. 可合并,如:case 401 | 403 | 404: description = 'Not Allowed'
  2. 循环结构
    1. time.sleep(1)表示程序休眠 1 秒
    2. for-in loop ;
      1. use _ if the loop variable not used in loop
      2. 3 ways : range(100) ;range(1,101); range(1,101,2)左闭右开
    3. while loop :可以用break跳出/用continue进入下一轮循环

列表

  1. 创建:items=[1,2,34] ,items2 = ['Python', 'Java', 'Go', 'Kotlin']
  2. list函数可以将其他序列变成列表,如:items4 = list(range(1, 10)) items5 = list(‘hello’)`
  3. +运算符实现两个列表的拼接;*运算符实现列表的重复,*运算符会将列表元素重复指定的次数; innot in运算符判断一个元素在不在列表中,
  4. print(29 in items6) # True ; print(99 in items6) # False
  5. 索引:[]的元素位置可以是0N - 1的整数,也可以是-1-N的整数,分别称为正向索引和反向索引,其中N代表列表元素的个数。对于正向索引,[0]可以访问列表中的第一个元素,[N - 1]可以访问最后一个元素;对于反向索引,[-1]可以访问列表中的最后一个元素,[-N]可以访问第一个元素
  6. 切片运算是形如[start:end:stride]的运算符
    1. start代表访问列表元素的起始位置
    2. end代表访问列表元素的终止位置(终止位置的元素无法访问)
    3. stride则代表了跨度,简单的说就是位置的增量,比如我们访问的第一个元素在start位置,那么第二个元素就在start + stride位置,当然start + stride要小于end
    4. 如果start值等于0,那么在使用切片运算符时可以将其省略;如果end值等于NN代表列表元素的个数,那么在使用切片运算符时可以将其省略;如果stride值等于1,那么在使用切片运算符时也可以将其省略
    5. print(items8[-2:-6:-1]) 反向遍历
    6. 可以通过切片操作修改列表中的元素, 如items8[1:3] = ['x', 'o']
  7. append 在尾部添加元素;insert :插入到某个位置
languages = ['Python', 'Java', 'C++']
languages.append('JavaScript')
print(languages)  # ['Python', 'Java', 'C++', 'JavaScript']
languages.insert(1, 'SQL')
print(languages)  # ['Python', 'SQL', 'Java', 'C++', 'JavaScript']
languages = ['Python', 'SQL', 'Java', 'C++', 'JavaScript']
if 'Java' in languages:
languages.remove('Java')
if 'Swift' in languages:
languages.remove('Swift')
print(languages)  # ['Python', 'SQL', C++', 'JavaScript']
languages.pop()
temp = languages.pop(1)
print(temp)       # SQL
languages.append(temp)
print(languages)  # ['Python', C++', 'SQL']
languages.clear()
print(languages)  # []
  1. 使用 Python 中的del 关键字后面跟要删除的元素, 如`del items[1]
  2. index函数用于查找索引,count函数用于统计元素出现次数;如:print(items.index('Python')) # 从索引位置3开始查找'Java' print(items.index('Java', 3))
  3. sort() 实现排序;reverse() 实现列表反转
  4. 列表生成式 1. items = [i for i in range(1, 100) if i % 3 == 0 or i % 5 == 0] 2. nums2 = [num ** 2 for num in nums1]

元组(tuple)

  1. 元组是不可变类型
  2. ()表示空元组,但是如果元组中只有一个元素,需要加上一个逗号,否则()就不是代表元组的字面量语法,而是改变运算优先级的圆括号
  3. 打包和解包操作:多个用逗号分隔的值赋给一个变量时,多个值会打包成一个元组类型;当我们把一个元组赋值给多个变量时,元组会解包成多个值然后分别赋给对应的变量
  4. 星号表达式:可以让一个变量接收多个值;用星号表达式修饰的变量会变成一个列表,列表中有0个或多个元素;其次,在解包语法中,星号表达式只能出现一次
  5. 解包语法对所有的序列都成立,这就意味着我们之前讲的列表、range函数构造的范围序列甚至字符串都可以使用解包语法。
  6. 交换变量的值:直接a, b, c = b, c, a
  7. 可以和列表互换,如list(infos) or tuple(frts)

集合

集合并不支持索引运算。另外,集合的互异性决定了集合中不能有重复元素 支持innot in成员运算 底层是用了哈希存储

创建

用{ }语法,且至少有一个元素,也可用 Python 内置函数set来创建一个集合 集合中的元素必须是hashable类型,所谓hashable类型指的是能够计算出哈希码的数据类型,通常不可变类型都是hashable类型,如整数(int)、浮点小数(float)、布尔值(bool)、字符串(str)、元组(tuple)等。可变类型都不是hashable类型

二元运算

集合的交集、并集、差集、对称差等运算,这些运算可以通过运算符来实现,也可以通过集合类型的方法来实现,代码如下所示。

set1 = {1, 2, 3, 4, 5, 6, 7}
set2 = {2, 4, 6, 8, 10}
 
# 交集
print(set1 & set2)                      # {2, 4, 6}
print(set1.intersection(set2))          # {2, 4, 6}
 
# 并集
print(set1 | set2)                      # {1, 2, 3, 4, 5, 6, 7, 8, 10}
print(set1.union(set2))                 # {1, 2, 3, 4, 5, 6, 7, 8, 10}
 
# 差集
print(set1 - set2)                      # {1, 3, 5, 7}
print(set1.difference(set2))            # {1, 3, 5, 7}
 
# 对称差
print(set1 ^ set2)                      # {1, 3, 5, 7, 8, 10}
print(set1.symmetric_difference(set2))  # {1, 3, 5, 7, 8, 10}

字典

创建字典可以使用{}字面量语法;字典的{}中的元素是以键值对的形式存在的,每个元素由:分隔的两个值构成,:前面是键,:后面是值,代码如下所示。

person = {
    'name': '王大锤',
    'age': 55,
    'height': 168,
    'weight': 60,
    'addr': '成都市武侯区科华北路62号1栋101', 
    'tel': '13122334455',
    'emergence contact': '13800998877'
}
print(person)

函数&模块&类