Python 基础总结篇

变量及数据类型

Numbers数字分为:int整型,long长整型,float浮点型,complex复数

String字符串由数字、字母、下划线组成的一串字符,用于表示文本的数据类型

bool布尔型:True,False,用于做判断(True实际值是1,False实际值是0)

List列表,支持字符,数字,字符串以包含列表(即嵌套),用[]标识,有序对象

Tuple元祖,用()标识,不能二次赋值,可以理解成不可变的列表(只读列表),有序对象

Dict字典,用{}标识,由索引(key)和它对应的值value组成,无序对象字

简单的数据类型转换方法

  • int(x)函数:将x转为整数,如果是四舍五入则是round(x)函数
  • float(x)函数:将x转为浮点数
  • str(x)函数:将x转为字符串
  • dict(x)函数: 将x转为字典  #dic = dict(m = 10 ,n = 'aa', h = [1,2,3]) 或 lst1=[("a","fff"),("b","ggg")]  →dic1 = dict(lst1)→{'a': 'fff', 'b': 'ggg'}

序列及字符串(list/str)

序列及通用操作

print(lst1+lst2)  # "+":序列的链接
print(lst1*3,lst2*2) # "*":序列重复
print(lst[0],lst[2],lst[9]) # 索引从0开始,eg lst[2]中,下标索引是2,指向lst的第3个值
print(lst[-1]) # 索引-1代表最后一个值
print(lst[2:5]) # 切片可以理解成列表的值区间,且是一个左闭右开区间,这里lst[2:5]代表的区间是:索引2的值 - 索引4的值
print(lst[0:5:2]) # List[i:j:n]代表:索引i - 索引j,以n为步长

列表的特征

  • 可包含任意类型的对象:数值、字符串、列表等
  • 通过下标索引访问序列中的值 → 序列的顺序是不能改变的,通过索引来定位列表的元素
  • 可随意变换列表长度,相当于随意指定新的列表
  • 可嵌套
  • 可原位改变
  • 列表生成器:range()是生成器,指向了一个范围 #range(0,10,2)代表指向了0,2,4,6,8这几个值,最后的2代表步长

可变列表list常用操作

  • list.append() 添加元素
  • 添加多个元素用.extend()方法:用新列表扩展原来的列表(直接拓展)
  • .remove方法:移除列表中某个值的第一个匹配项
  • del语句:删除list的相应索引值
  • lst.clear():移除所有值
  • .insert(i,m)方法:在索引i处插入m,这里索引i代表第(i+1)个值
  • .copy()方法:复制一个新的列表(分别指向两个列表)  与字典相同
  • .sort():默认升序排序/字母顺序(参数reverse:反向排序,针对数字)
  • 函数sorted() :排序并复制

字符串相关注释

  • 双引号单引号无区别,但文本中有引号的时候要相互交替使用
  • 需要多行字符串时候用三引号 ''' ''',""" """

转义字符

  • \',\" :分别输出单引号,双引号
  • \n:空行
  • 输出\,所以文件路径用“/”或者“\\”
  • 延伸-数据读写# 本地文件的界定:指向一个本地存储的文件,是一个链接或者一个映射
  • path1 = 'C:/Users/Hjx/Desktop/text.txt'  # 单个反斜杠:/
  • path2 = 'C:\\Users\\Hjx\\Desktop\\text.txt'  # 两个斜杠:\\(第一个\是转义符)
  • path3 = r'C:\Users\Hjx\Desktop\text.txt'  # r用于防止字符转义

序列通用功能

  • in/not in :判断是否存在
  • 文本连接:print('我很帅' + "没错"
  • 文本复制:print('handsome '*4)
  • .index()方法:print(st.index('g'))
  • 计算字符串长度:len()

字符串的常用功能

  • .replace(old,new,count):修改字符串,count:更换几个
  • .split(obj):拆分字符串,生成列表
  • .join():连接字符串,对象为列表
  • .startswith(“xie”)  判断是否以“xie”开头;str.endswith (“xie”)  判断是否以“xie”结尾
  • .upper() 全部大写
  • .lower() 全部小写
  • .swapcase() 大小写互换
  • .capitalize()  首字母大写
  • .isnumeric() 如果 string 只包含数字则返回 True,否则返回 False
  • .isalpha() 如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
  • .rstrip() 删除字符末尾的空格
  • %s %i %f都是格式化字符串,s/i/f分别代表插入字符串的源数据类型:整型/字符型/浮点型
  • %+.2f   输出两位小数并显示加号 %e  %E 
  • %g 科学计数法小数位数少的时候自动识别用浮点数,数据复杂的时候自动识别用科学计数法
  • # 更强大的格式化方法.format
    
    print("User ID: {0}".format("root"))
    print("{} 呵呵 {}".format("a","b"))
    # {} 这里代表占位符,其中可以有数字也可以没有 print("{}{}{}".format('a','b','c'),'\n',
    "{0}{1}{2}{0}".format('a','b','c'),'\n')
    #print("{}{}{}{}".format('a','b','c'))
    # {}和{0}的区别:都是占位符,后者有了明确指定 print("我的工作是{work}".format(work = '设计'))
    # 也可以用变量来指示

    更强大的格式化方法.format


字典(dict)

字典的特点

  • 键值对,一定共同出现,不能只有一个
  • 不允许同一个键出现两次:创建时如果同一个键被赋值两次,后一个值会被记住
  • key必须是字符串,value则可以是任意对象:数值,字符串,序列,字典
  • 字典是一个无序集合,序列由于没有key来做对应,所以以顺序来对应值
  • dic = {'var1':1, 'var2':'hello', 'var3':[1,2,3], 'var4':{'a':1,'b':2}}
  • 任意添加元素:dic['var5'] = '添加一个值'
  • 任意修改元素:dic['var4'] = '任意修改其中一个值'
  • 任意删除元素:del dic['var1']  删除字典 del dic

字典常用操作

  • .update()  更新/合并一个字典,把第二个字典合并到第一个字典,改变了第一个字典
  • .copy()   复制一个新的字典 与列表相同
  • in / not in 判断是否包含,这里的判断对象是key
  • len() 字典个数判断

字典的元素访问

dic = {'a':1, "b":2, "c":3}
print(dic['a'])
#print(dic[1]) # 不能用序列的索引方式
# 字典里面也就同样的意思,但字典没有顺序,以key来作为指向,所以指向的key必须存在 poi = {'name':'shop', 'city':'shanghai', 'information':{'address':'somewhere', 'num':66663333}}
print(poi['information']['address'])
# 对于嵌套字典,输出嵌套内容,通过重复指向来输出 print(poi.get('name'))
print(poi.get('type',print('nothing')))
# .get(key)方法:直接查看key的value,如果没有相应key则返回None,添加print参数可以多返回一个值 print(poi.keys(),type(poi.keys()))
print(list(poi.keys()))
# .keys()方法:输出字典所有key,注意这里的输出内容格式是视图,可以用list()得到key的列表,类似range() print(poi.values(),type(poi.values()))
print(list(poi.values()))
# .values()方法:输出字典所有values,原理同.keys()方法 print(poi.items(),type(poi.items()))
print(list(poi.items()))
# .items()方法:输出字典所有items(元素),原理同.keys()方法

字典的元素遍历

poi = {'name':'shop', 'city':'shanghai', 'information':{'address':'somewhere', 'num':66663333}}
#前三项输出key 后两项输出value
for key in poi.keys():
print(key) for keys in poi.keys():
print(keys) for values in poi:
print(values) for value in poi.values():
print(value) for values in poi:
print(poi[values])

条件及循环语句(if,while,for)

Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块

基础函数

  • 输入函数 input()  注:input()返回结果都为字符串,如果需要变为数字则用到int()/float()
  • 两种条件判断:if-else -------  多种条件判断:if-elif-...-else
  • 单语句多条件判断:or and   注: or(满足其1)and(同时满足)
  • for循环    可以遍历任何序列的项目,如一个列表或者一个字符串。  (循环套循环,注意:尽量不要多于3个嵌套)
  • while循环  执行语句可以是单个语句或语句块,判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。当判断条件假false时,循环结束。 ---- -while-else语句

循环控制语句

  • break:在语句块执行过程中终止循环,并且跳出整个循环
  • continue:在语句块执行过程中跳出该次循环,执行下一次循环
  • pass:pass是空语句,是为了保持程序结构的完整性

定义函数(def)

基础理解

  • return语句退出函数,并返回一个表达式。不带参数值的return语句返回None
  • 默认参数  可在定义f(x,y=2)设置默认参数
  • 可变参数  f(*x)  加*则为可变参数  注:默认会把可变参数传入一个元祖
  • 局部与全局变量:定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
  • 局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中
  • global x 将x定义为全局变量
  • 匿名函数Lambda    lambda作为匿名函数,是不需要函数名的 → 需要一个函数 如:f = lambda a,b,c:a+b+c  只能处理一行

模块与包

基础使用

  • print(包.__file__)查看现有包所在路径
  • 包名.path.append('C:/Users/Hjx/Desktop/') 改路径
  • import 调用包 as 简化名
  • 包.  使用包内函数
  • from ... import ... 调用部分

基础模块

 # python标准模块 —— random随机数

 import random

 x = random.random()
y = random.random()
print(x,y*10)
# random.random()随机生成一个[0:1)的随机数 m = random.randint(0,10)
print(m)
# random.randint()随机生成一个[0:10]的整数 st1 = random.choice(list(range(10)))
st2 = random.choice('abcdnehgjla')
print(st1,st2)
# random.choice()随机获取()中的一个元素,()种必须是一个有序类型 lst = list(range(20))
sli = random.sample(lst,5)
print(sli)
# random.sample(a,b)随机获取a中指定b长度的片段,不会改变原序列 lst = [1,3,5,7,9,11,13]
random.shuffle(lst)
print(lst)
# random.shuffle(list)将一个列表内的元素打乱 # python标准模块 —— time时间模块 import time for i in range(2):
print('hello')
time.sleep(1)
# time.sleep()程序休息()秒 print(time.ctime())
print(type(time.ctime()))
# 将当前时间转换为一个字符串 print(time.localtime())
print(type(time.localtime()))
# 将当前时间转为当前时区的struct_time
# wday 0-6表示周日到周六
# ydat 1-366 一年中的第几天
# isdst 是否为夏令时,默认为-1 print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))
# time.strftime(a,b)
# a为格式化字符串格式
# b为时间戳,一般用localtime() %y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数(01-12) %M 分钟数(00=59) %S 秒(00-59) %a 本地简化星期名称 %A 本地完整星期名称 %b 本地简化的月份名称 %B 本地完整的月份名称 %c 本地相应的日期表示和时间表示 %j 年内的一天(001-366) %p 本地A.M.或P.M.的等价符 %U 一年中的星期数(00-53)星期天为星期的开始 %w 星期(0-6),星期天为星期的开始 %W 一年中的星期数(00-53)星期一为星期的开始 %x 本地相应的日期表示 %X 本地相应的时间表示 %Z 当前时区的名称 %% %号本身

基础模块


数据读写

基础操作

  • 本地文件的界定:指向一个本地存储的文件,是一个链接或者一个映射  (详情见序列及字符串-转义字符延伸)
  • 读取:open('路径', '模式', enconding = '编码' )
  • 模式:r:读取文件,默认;w:写入;rw:读取+写入;a:追加
  • 简答的读取方法:.read() → 读取后,光标将会留在读取末尾
  • .readline() 读取行
  • 遍历前20个文件:for语句+f.readlines()[0:20]
  • .seek(0)  移动光标 0初始
  • .close()  关闭文件链接
  • 在申明了目录之后,就可以直接输出文件名了 → 相对路径
  • # 存储:pickle.dump(obj, file, [,protocol])
    
    import pickle
    
    data = {'a':[1,2,3,4], 'b':('string','abc'), 'c':'hello'}
    print(data)
    # 创建一个字典变量data pic = open( 'C:\\Users\\Hjx\\Desktop\\data.pkl', 'wb')
    # 以二进制来存储:rb, wb, wrb, ab pickle.dump(data,pic)
    pic.close()
    # 将一个字典数据存成了pkl文件 # 读取:pickle.load(file) f = open( 'C:\\Users\\Hjx\\Desktop\\data.pkl', 'rb') st = pickle.load(f)
    print(st)
    # 直接读取pkl文件内的数据,该数据为一个字典

    储存和读取pkl文件

  • # 文件写入 - write
    
    path =  'C:\\Users\\Hjx\\Desktop\\test_write.txt'
    f = open(path, 'w', encoding = 'utf8')
    f.write('hello world!')
    f.close()
    # 执行后直接创建“test_write.txt”文件,并写入“hello world!” #写入列元素-.writelines(list)
    path = 'C:\\Users\\Hjx\\Desktop\\'
    f = open(path + 'test_write2.txt', 'w', encoding = 'utf8')
    lst = ['a','b','c','d','e'] for i in range(len(lst)):
    lst[i] = lst[i] + '\n' f.writelines(lst)
    f.close()
    # 通过遍历给每个元素最后加上"\n"

    写入/写入列

基础模块

# os模块:系统模块 - 常用命令

import os  # 导入模块

print(os.name)  # 输出字符串指示正在使用的平台。如果是window 则用'nt'表示,对Linux/Unix用户,它是'posix'。

print(os.getcwd())  # 函数得到当前工作目录,即当前Python脚本工作的目录路径。

print(os.listdir())  # 返回指定目录下的所有文件和目录名。

#os.chdir('C:\\Users\\Hjx\\Desktop\\' )  # 切换到目标路径
#print(os.getcwd()) #os.remove('text2.txt') # 删除一个文件 print(os.path.split('C:\\Users\\Hjx\\Desktop\\text.txt')) # 函数返回一个路径的目录名和文件名 print(os.path.exists('C:\\Users\\Hjx\\Desktop\\heheh.txt'))
# 用来检验给出的路径是否真地存在,这里不存在改文件故False,但路径存在故True

OS模块

上一篇:改变Chrome浏览器主程序_缓存_个人信息路径


下一篇:使用 CUBLAS 库给矩阵运算提速