python学习
库
- argparse
解析命令行参数 - random
生成随机数,做一些随机操作 - torch
开源深度学习框架 - numpy
多维数组对象 - wandb
机器学习实验跟踪和模型可视化的工具 - os
与操作系统进行交互
文件引用
1.from 模块名 import 具体内容(如某个接口)
2.import 模块
数据类型
bool类型:python中要求是True和False
运算符
算术运算符
整数除法为//
小数除法为/
次方为**
逻辑运算符
与:and
或:or
取反:not
!=、==
赋值运算符
+=、*=、/=、//=
身份运算符
主要是is、is not
python
# is:比较两个对象是否是同一个对象(内存地址)
# is not:比较两个对象是否不是同一个对象
#判空:
if a is None
成员运算符
python
# in:是否在序列中
# not in:是否不在序列中
# 实际应用
text = "Hello World"
if "World" in text:
print("找到了")
三元运算符
python
age = 20
status = "成年" if age >= 18 else "未成年"
基本输入输出
用input提示用户输入,用print提示用户输出
python
# 括号里可以加上提示词
a = input()
# 输入默认是字符串类型的,如果需要int类型就需要转换
a = int(input("请输入:"))
age = input("How old are you ? >")
name = input("your name?>")
#输出一个值
print(a)
#输出话+值
print ("your name is %s, your age is %d" %(name, int(age)))
print(f"your name is {name}, your age is {age}") #3.7b版本以上的特性
基本数据结构
字符串
''和""都表示字符串,需要注意的是,字符串不支持修改某一个元素,如果想要修改,要先转成列表
python
# 可以用+来拼接
s1="i"
s2="b"
s=s1+s2
# 可以把列表的所有元素串成一个字符串
''.join(ans)
"-".join(ans) #表示用-来做连接符进行拼接
列表
用\[\]来定义,也可以用list()构造函数
python
# 空列表
my_list = []
# 二维列表
matrix = [[1, 2], [3, 4], [5, 6]]
# 用list来创建
chars = list('hello') # ['h', 'e', 'l', 'l', 'o']
# 从元组创建
nums = list((1, 2, 3)) # [1, 2, 3]
# 创建空列表
empty = list() # []
支持插入到某一位置insert,移除指定位置元素用pop,尾部插入用append,删除某一元素用remove
python
animals = ["大象","猴子","蚂蚁","豪猪"]
animals.insert(1,"狮子")
animals.pop(3)
print ("动物园有这些动物:", animals)
列表很自由,里面可以放不同的数据类型
python
a = [1, False, "sad"]
# 判断元素是否在列表中
if 1 in a:
复制一个列表给另一个列表
python
b = [1, 2, 3, 4]
a=b # 可以,但是会指向同一内存,修改a的时候,b的内容也会变
a=b.copy() # 推荐,拷贝赋值
元组(tuple)
不可修改的列表,只读,用()来定义
nums = (0,1)
print("nums are", nums)
字典
字典dict可以包含不同类型的key和value,和C++的map类似,用keys()方法获得所有的键,用values()方法获得所有的值
python
infos = {} # 空字典
infos = {"李明":23, "豆豆":22,"老李":55}
# 插入,不存在就插入,存在就是修改
d['韩梅梅']=23
# 移除
d.pop('韩梅梅')
用get或in判断是否有该key和对应的value
python
# 用in判断
infos = {"李明":23, "豆豆":22,"老李":55}
infos["老王"]=32
if not ("梁田" in infos):
print("梁田不在记录")
infos.pop("老王")
# 用get判断,key不存在时进行访问会报错
sum_count[pre_sum] += 1 ❌
sum_count[pre_sum] = sum_count.get(pre_sum, 0) + 1 # get检查是否存在,不存在就返回0
遍历字典
python
for k, v in dic.items():
集合set
允许存在多个重复的值,添加元素用add,删除用remove操作
s=set() # 空集合
numset = set([1,3,5,7,9])
切片
用以提取子序列,具体语法为
sequencestart:stop:step,区间为[start, stop)

列表切片
字符串切片返回字符串,列表切片返回新列表,都可以反转后赋值给自己
python
nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
#反转列表
reversed_nums = nums[::-1]
#提取
nums[2:6] # [2, 3, 4, 5]
nums[:4] # [0, 1, 2, 3]
nums[7:] # [7, 8, 9]
# 删除一段
nums[1:4] = [] # [0, 5, 6, 7, 8, 9]
循环和控制
for循环
用缩进来控制模块,用:来表示模块内容
1.用in来获取元素进行遍历
python
nums = (0,100,34,50,179,130,27,22)
for num in nums:
if num > 50:
bigernums.append(num)
print("大于50的数字有:", bigernums)
- 用range()按索引进行遍历
python
n = len(nums)
for i in range(n):
# 从某一位置开始遍历
for i in range(start,n):
i不需要提前定义,而且对它的赋值也无意义,因为进入循环后它会被重定义为0
3.同时获取索引和值
python
nums = ['a', 'b', 'c']
for index, value in enumerate(nums):
print(index, value) # 输出 0 a / 1 b / 2 c
while循环
和C++一样用break和continue来控制跳出和跳过
python
while 判断条件:
函数
用def来定义函数,返回值有多个时,通常会打包成元组
def 函数名(参数1: 类型, 参数2: 类型 = 默认值) -> 返回类型:
# 函数体
1.函数的可变参数
*args:接收任意数量的位置参数,打包成元组
python
def sum_all(*args):
total = 0
for num in args:
total += num
return total
print(sum_all(1, 2, 3)) # 6
print(sum_all(10, 20, 30, 40)) # 100
**kwargs:接收任意数量的关键字参数,打包成字典
python
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Alice", age=25, city="上海")
# name: Alice
# age: 25
# city: 上海
2.函数内部使用全局变量
python
x = 10 # 全局变量
def func():
y = 5 # 局部变量,只能在函数内使用
print(x) # 可以读取全局变量
def func2():
global x # 声明要修改全局变量
x = 20 # 修改全局变量
生成器与迭代器
python提供生成器的功能,生成器根据函数或运算规则产生一系列数据,通过对返回值g调用next(g)可以依次取出生成的数据。g就是迭代器。有的对象可以迭代但是不是迭代器,只有可以被next调用的对象才是迭代器。
1.生成器表达式
写定运算规则,返回一个生成器对象,通过next来逐个取符合运算规则的值,
基本语法:
bash
(表达式 for 变量 in 可迭代对象 if 条件)