python学习

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)
  1. 用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 条件)