文章目录
方便自己学习和查找,一些最基本的python用法
运算 和 数据类型 和 运行优先级
is
查看 id 是否一样
逻辑
列表
创建
a= [1,2,3,4]
索引
a[2]
a[-1]
切片
a = [1,2,3,4,5,6]
a[0:3] -> [1,2,3]
a[3:6] -> [4,5,6]
a[:3] -> [1,2,3]
a[3:] -> [4,5,6]
a[:] -> [1,2,3,4,5,6]
a[0:6:2] -> [1,3,5]
a[::2] -> [1,3,5]
a[::-1] -> [6,5,4,3,2,1]
增删改查
list = [“a”,“b”,“c”]
list.append(“d”) -> [“a”,“b”,“c”,“d”]
list.extend([“e”,“f”,“h”]) -> [“a”,“b”,“c”,“d”,“e”,“f”,“h”]
list[len(list):] = [“d”] -> [“a”,“b”,“c”,“d”]
list[len(list):] = [“e”,“f”,“h”] -> [“a”,“b”,“c”,“d”,“e”,“f”,“h”]
list.insert(1,“0”) -> [“a”,“0”,“b”,“c”]
list.remove(“b”) -> [“a”,“c”] 多个相同的,删第一个,若不存在则报错
list.pop(1) -> [“a”,“c”]
list.clear() -> []
list[2] = “0” -> [“a”,“b”,“0”]
list[1:] = [“1”,“2”] ->[“a”,“1”,“2”]
nums = [3,1,2]
nums.sort() -> [1,2,3]
nums.reverse() -> [2,1,3]
nums.sort(reverse = True) ->[3,2,1]
nums.count(1) -> 1 统计有几个1
nums.index(2) -> 2 找到2的索引值,只返回第一个
list[list.index(2)] =0 ->[3,1,0]
nums2 = nums.copy() 浅拷贝
nums3 = nums[:] 浅拷贝
+ 和 *
a = [1,2,3]
b = [4,5,6]
c = a+b -> [1,2,3,4,5,6]
c = a * 3 -> [1,2,3,1,3,2,1,2,3]
嵌套 多维数组
matrix =[[1,2,3],[4,5,6],[7,8,9]]
for i in matrix:
for eacj in i:
print(each)
matrix[0] = [1,2,3]
matrix[0][0] = 1
A = [0] *3 -> A=[0,0,0]
for i in range(3):
A[i] = [0]*3
A = [[0,0,0],[0,0,0],[0,0,0]]
浅拷贝和深拷贝
浅拷贝
x = [[0,0,0],[0,0,0],[0,0,0]]
y = x.copy()
x[1][1] = 5
x = [[0,0,0],[0,5,0],[0,0,0]]
y = [[0,0,0],[0,5,0],[0,0,0]]
or
import copy
x = [[0,0,0],[0,0,0],[0,0,0]]
y = copy.copy(x)
x[1][1] = 5
x = [[0,0,0],[0,5,0],[0,0,0]]
y = [[0,0,0],[0,5,0],[0,0,0]]
深拷贝
import copy
x = [[0,0,0],[0,0,0],[0,0,0]]
y = copy.deepcopy(x)
x[1][1] = 5
x = [[0,0,0],[0,5,0],[0,0,0]]
y = [[0,0,0],[0,0,0],[0,0,0]]
列表推导式
a = [1,2,3,4,5]
a = [i *2 for i in a]
a = [i *2 for i in "abc"]
a= [ i for i in range(10) if i%2 ==0]
words =["aaa","abc","ddd","cfd"]
find = [ w for w in words if w[0]=='a']
matrix =[[1,2,3],[4,5,6],[7,8,9]]
flatten = [ col for row in matrix for col in row ]
matrix =[[1,2,3],[4,5,6],[7,8,9]]
flatten = [ col for row in matrix if row[1] == 0 for col in row if col%2 == 0]
元组
元素不能改变的列表
rhyme =(1,2,3,4,5)
可以进行切片
查(不能修改)
nums=(3,4,5,6,1,2,3,6)
nums.count(3) -> 2
+ and *
a= (1,2,3)
b= (4,5,6)
a+b -> (1,2,3,4,5,6)
a*\2 -> (1,2,1,2)
可以当做列表推导式的进行转换
s = (1,2,3)
b = [each*x for in s]
生成只有一个元素的元组
x = (520,)
打包解包
打包
t=(132,“asd”,3.14)
解包
x,y,z = t
a,b,c,d,e =“which”
a,b,*c =“which” -> a =w,b =h,c =ich\
元组和序列
a=([1,2,3],[4,5,6])
元组内若为可修改的成分,则可进行增删改。
字符串
大小写转换
x = “I love You”
x.capitalize() #字符串首字母变大写,其他变小写
->“I love you”
x = “I love You”
x.casefold() #返回所有都是小写的字符串
->“i love you”
x = “I love You”
x.title() #字符串中每个词的首字母变成大写,其他单词都变成小写
->“I Love You”
x = “I love You”
x.swapcase() #大小写反转
->“i lOVE yOU”
x = “I love You”
x.upper() #所有字母都变大写,只能处理英语
->“I LOVE YOU”
x = “I love You”
x.lower() #所有字母都变小写,只能处理英语
->“i love you”
左中右对齐
x= "你好"
x.center(10) #中间对齐
->" 你好 "
x= "你好"
x.ljust(10) #左对齐
->"你好 "
x= "你好"
x.rjust(10) #右对其
->" 你好”
x= "你好"
x.zfill(10) #左填充0
->"00000000你好”
所有左中右对其支持fillchart,自定义占位符
x= "你好"
x.center(10,"+") #左填充0
->"++++你好++++”
查找
x = "一二三二一"
x.count("二", 0 , 5 ) #查找个数,起始和末尾位置可省却
-> 2
x = "一二三二一"
x.find("二", 0 , 5 ) #正向查找对应(第一个)的坐标值,起始和末尾位置可省却,找不到返回-1
-> 1
x = "一二三二一"
x.rfind("二", 0 , 5 ) #逆向查找对应(第一个)的坐标值,起始和末尾位置可省却,找不到返回-1
-> 3
x = "一二三二一"
x.index("二", 0 , 5 ) #正向查找对应(第一个)的坐标值,起始和末尾位置可省却,找不到返回error
-> 1
替换
code = """
print(1)
print(3)"""
code.expandtabs(4) #使用空格代替tab,一个tab 4个空格
->
code = """
print(1)
print(3)"""
x = "你是小熊吗?"
x.replace("小熊",“大老虎”) #指定文本进行替换
->"你是大老虎吗?"
table = str.maketrans("ABCDEFG","1234567")
x="Are you sure?"
x.translate(table) #根据表格的转换方法对字符串进行转换
->"1re you sure?"
同上, maketras 还有个参数是屏蔽
table = str.maketrans("ABCDEFG","1234567",“Are”) #则不转换屏蔽的字段
x="Are you sure?"
x.translate(table) #根据表格的转换方法对字符串进行转换
->"Are you sure?"
判断
x = "我爱python"
x.startswith("我") #从开头判断匹配字段,可选开始结束位置
-> true
x = "我爱python"
x.endswith("python") #从末尾判断匹配字段 , 可选开始结束位置
-> true
x = "我爱python"
x.endswith(("你","我", "他")) #从末尾判断匹配字段 , 通过元组匹配,右一个满足即可
-> true
x = "I love python"
x.istitle() #判断每个单词的首字母是否为大写
-> False
x = "I love python"
x.isupper() #判断所有的字母为大写
-> False
x = "I love python"
x.isalpha() #判断所有元素为字母
-> False(因为右空格)
x = ""
x.isspace() #判断是否为空白字符串(tab 空格 什么都没有 \n 换行符 都算)
-> True
x = "I love you\n"
x.isprintable() #判断所有元素都可以打印)
-> False(因为\n)
x = "123"
x.isdecimal() #判断所有元素是不是数字
x.isdigit() #判断所有元素是不是数字,可判断2^2
x.isnumeric() #判断所有元素是不是数字,可判断罗马数字,一二等
x.isalnum() #判断数字,包括上面三种
-> True
-> True
-> True
x = "test1"
x.isidentifier() #判断字符串为合法的变量名
-> True
import. keword
keyword.iskeyword("if") #判断字符串为python的关键字
-> True
截取
x = " 你好 "
x.lstrip() #左侧不留空白
->"你好 "
x = " 你好 "
x.rstrip() #右侧不留空白
->" 你好"
x = " 你好 "
x.strip() #左右侧不留空白
->"你好"
x = " 你好!!!"
x.strip("!") #含有chart变量,可选择去除内容
->" 你好"
x = "###你好!!!"
x.removeprefix("###") #去除特定的前缀
->"你好!!!"
x = "###你好!!!"
x.removesurfix("!!!") #去除特定的后缀
->"###你好"
拆分和拼接
x = "www.baidu.com"
x.partition(".") #从左到右按分割符分割,只找到第一个分割符处分割
->('www', '.' ,'baidu.com')
x = "www.baidu.com"
x.rpartition(".") #从右到左按分割符分割, 只找到第一个分割符处分割
->('www.baidu', '.' ,'com')
x = "www.baidu.com"
x.split(".") #按分隔符进行切割,还有参数分割次数
->['www', 'baidu' ,'com']
x = "www.baidu.com"
x.rsplit(".",1) #从末端按分隔符进行切割,只切一次
->['www.baidu' ,'com']
x = "www.baidu.com\nasd\n\r你好\r"
x.splitlines() #按换行符切割 可识别 \n \r\n \r ,若添加参数则可选择是否保留换行符
x.splitlines(True)
->["www.baidu.com","asd","你好"]
->["www.baidu.com\n","asd\n\r","你好\r"]
x = "."
x.join("abc","def","ghi") #以字符串为分隔符把字符串进行合并
-> ' abc.def.ghi'
格式化
year = 2021
'今年是{}'.format(year)
-> '今年是2021'
year = 2021
month =5
'今年是{1},{0}月'.format(month,year) #可以按下标填写
-> '今年是2021,5月'
'今年是{year},{month}月'.format(month="2021",year="5") #可以按关键字填写
-> '今年是2021,5月'
"{:^10}".format(“你好”) #^:格式化居中
-> '' 你好 ”
"{0:>10}{1:<10}".format(“你好”,"不好”) #> or <:格式化左移,右移
-> '' 你好不好 ”
"{:010}".format(520) #0:格式化0填充
-> '' 0000000520”
"{:%>10}".format(520) #0:格式化%填充,按需求
-> '' %%%%%%%520”
符号选项
只对数字有效
"{:+}{:-}".format(520,-250)
-> '+520 -250'
"{:,}".format(123123123) #千位分隔符
-> '123,123,132'
"{:_}".format(123123123) #千位分隔符,按需求
-> '123_123_132'
"{:.2f}".format(3.1415) #小数点后保留2位精度
-> '3.14'
"{:.2g}".format(3.1415) #小数点左右保留2位精度
-> '3.1'
"{:.3}".format("123456") #截取功能
-> '123'
"{:b}".format(80) #按输出格式输出,种类如下表
"{:#b}".format(80) #按输出格式输出,输出前面加入类型标识,种类如下表
-> '1010000'
-> '0b1010000'
"{:.{prec}f}".format(3.1415,prec=2) #按需输出
-> '3.14'
f-字符串
year =2021
f'今年是{year}' # F 和f 都可
-> '今年是2021'
序列
del
x=[1,2,3] #删除
del x
x=[1,2,3,4,5] #删除
del x[1:3]
-> [1,5]
列表 元组 字符串 转换
list("Ilovey")
-> ['I', 'l', 'o', 'v', 'e', 'y']
tuple("Ilovey")
-> ('I', 'l', 'o', 'v', 'e', 'y')
str([1,2,3,4,5])
-> '[1, 2, 3, 4, 5]'
min() max()
s = [1,2,3,4,5]
min(s)
max(s)
-> 1
-> 5
s = "Fishc"
max(s)
-> s
s = []
max(s,default ="123")
-> 123
max(1,2,3,4,5)
-> 5
len() sum()
len([1,2,3,4,5]) #判断长度,按机器位数右最大值
-> 5
sum([1,2,3,4,5]) #求和
-> 15
sum([1,2,3,4,5],start=100) #求和,从100开始
-> 115
sorted() reveresed()
sorted([2,1,3,4,5]) #排序 ,生成全新列表,并不会影响原列表
-> [1,2,3,4,5]
sorted([2,1,3,4,5],reverse=True) #排序 ,并翻转生成全新列表,并不会影响原列表
-> [5,4,3,2,1]
reveresed([2,1,3,4,5]) #翻转,返回为迭代器
list(reveresed([2,1,3,4,5])) #使用list 把迭代器里的内容提取
-> [5,4,3,2,1]
进制 和 位运算
进制转换
bin():其他进制转二进制
oct():其他进制转八进制
int():其他进制转十进制
hex():其他进制转十六进制
二进制:以“0b”开头
八进制:以“0”开头
十六进制:以“0x”开头
a=10
bin(10)
-> '0b1010'
oct(10)
-> '0o12'
hex(10)
-> '0xa'
位运算
a = 0011 1100
b = 0000 1101
<----------------->
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
a = 0011
a>>1
-> '001'
a<<1
->'00110'