Python基础
2020-02-26 15:04:56 0 举报
AI智能生成
Python基础【经常更新】
作者其他创作
大纲/内容
3 高级类型
列表
使用场景
存储相同类型的数据
对列表中的每一项元素,执行相同的操作
强制转换:list("AbC")
字符串转列表第二法
字符串转列表第二法
创建:l = [1,2,'a']
赋值为列表元素 a,b = [123,'me']
左右个数必须相同
可用于拆包(但不建议)
切片方法与字符串切片相同
注意:列表相互赋值并不是新建内存单元重新储存,而是复制列表指针
这意味着,改变复制过的任意一个列表,则所有列表都同样变化
这意味着,改变复制过的任意一个列表,则所有列表都同样变化
切片复制创建一个新列表而不影响原列表
b = a[:]
b = a[:]
增删改查
增
append 给列表的最后加一个列表元素
l = [1, 2, 'a']
l.append(3) --> 会改变原列表
print(l)
insert 插入元素到列表的任意位置 从0开始
l.insert(1,'我') --> 会改变原列表
print(l)
extend 在列表的最后加入一组列表元素
l.extend(['是','小然']) --> 会改变原列表
print(l)
l = [1, 2, 'a']
l.append(3) --> 会改变原列表
print(l)
insert 插入元素到列表的任意位置 从0开始
l.insert(1,'我') --> 会改变原列表
print(l)
extend 在列表的最后加入一组列表元素
l.extend(['是','小然']) --> 会改变原列表
print(l)
删
pop 通过索引删除列表中对应的元素,有返回值为删除元素内容
默认删除最后一个即len(l)元素,len(l) 计算列表个数
l.pop() --> 会改变原列表
l.pop(-3) --> 会改变原列表
print(l)
remove 通过元素删除列表中该元素,多个元素则删除第一个
l.remove(2) --> 会改变原列表
print(l)
del 按照索引删除该元素
del l[2] --> 会改变原列表
print(l)
默认删除最后一个即len(l)元素,len(l) 计算列表个数
l.pop() --> 会改变原列表
l.pop(-3) --> 会改变原列表
print(l)
remove 通过元素删除列表中该元素,多个元素则删除第一个
l.remove(2) --> 会改变原列表
print(l)
del 按照索引删除该元素
del l[2] --> 会改变原列表
print(l)
切片删除列表元素 左闭右开
del l[1:2] --> 会改变原列表
print(l)
切片(步长)删除列表元素
del l[::2] --> 会改变原列表
print(l)
del l[1:2] --> 会改变原列表
print(l)
切片(步长)删除列表元素
del l[::2] --> 会改变原列表
print(l)
清空列表
l.clear()
l.clear()
清空原数据,但不释放指针
改
l[0] = '你好'
print(l)
print(l)
查
print(l.index(2))
不会改变原数据
排序反转
小大排序
l.sort()
l.sort()
大小排序
l.sort(reverse = True)
l.sort(reverse = True)
改变原数据
反转列表:l.reverse()
列表转字符串
List to Str
List to Str
s1 = ''.join(l)
print(s1)
s2 = ' '.join(l)
print(s2)
print(s1)
s2 = ' '.join(l)
print(s2)
嵌套列表
ll1 = [1,'a','abc',[1,2,3]]
print(aaa[3][2])
aaa[3][2] = 5
print(aaa[3][2])
aaa[3][2] = 5
range
range(2,100,2)
元组
可读列表使用、拆包使用
赋值为元组中元素 a,b = (123,'me')
此代码作用:拆包
且Python官方推荐
且Python官方推荐
左右个数必须相同
字典
使用场景
存储描述一个物体的相关信息
特点:有序、键唯一,值任意
且键必须是不可变数据类型
且键必须是不可变数据类型
{'你好':{'你好':'好的','你好6':'好的'},'是呀':'是的'}
如果一个列表中存在多个相同的键 则后面的替换前面的
创建方法
基本方法
dic1 = dict({1:'好的',2:'好的'})
依赖元组创建
dic2 = dict((('你好',1),('你好',2),('你好',3)))
依赖等式创建
dic3 = dict('one'=1,'two'=2,'three'=3)
dic1 = dict({1:'好的',2:'好的'})
依赖元组创建
dic2 = dict((('你好',1),('你好',2),('你好',3)))
依赖等式创建
dic3 = dict('one'=1,'two'=2,'three'=3)
增删改查
增
dic = {'name': 'xiaoran'}
方法一:dic['age'] = 12
print(dic)
方法二:dic.setdefault('age', 20)
print(dic)
方法一:dic['age'] = 12
print(dic)
方法二:dic.setdefault('age', 20)
print(dic)
方法二操作策略:有则不变(不更新),无则增加
将一个字典赋值到另一个字典
更新后面字典的数据 此为方法三
更新后面字典的数据 此为方法三
dict = {'Name': 'Zara', 'Age': 7}
dict2 = {'Sex': 'female' }
dict.update(dict2)
dict2 = {'Sex': 'female' }
dict.update(dict2)
删
按键弹出字典中存在的键值对,此时键必须存在
pop('name')
按键删除字典中存在的键值对,此时键必须存在
del dic['age']
print(dic) 如不存在则报错
pop('name')
按键删除字典中存在的键值对,此时键必须存在
del dic['age']
print(dic) 如不存在则报错
如果键值对全部指定,则永不报错
不管此时指定的值是否正确
print(dic.pop('name', None))
不管此时指定的值是否正确
print(dic.pop('name', None))
清空:dic.clear()
改
dic = {'name': 'xiaoran'}
dic['name'] = 'ran'
print(dic)
dic['name'] = 'ran'
print(dic)
和增的方法一相同
查
查键值对
print(dic.items())
得到的是特殊的列表类型
每个键值对是元组形式
list(dic.items())来转为普通列表
每个键值对是元组形式
list(dic.items())来转为普通列表
展示所有元素:for k,v in dic.items():print(k,v)
查键名
print(dic.keys())
得到的是特殊的列表类型
list(dic.keys())来转为普通列表
list(dic.keys())来转为普通列表
展示所有元素:for key in dic.keys():print(key)
查值
print(dic.values())
得到的是特殊的列表类型
list(dic.values())来转为普通列表
list(dic.values())来转为普通列表
展示所有元素:for value in dic.values():print(value)
取
print(dic['name'])
此时如果键不存在会报错
print(dic.get('name'))
如无此键不输出不报错
如无此键也可以自定义输出
print(dic.get('name','无此键,请检查重试'))
print(dic.get('name','无此键,请检查重试'))
嵌套字典
类型分类及特性
可变(但不可哈希)
列表、字典
不可变(但可哈希)
Str、Bool、Int、元组
4 各种关系
While循环
代码块
For循环
If判断
Case判断
三元运算
a[i] = a[i] if(a[i] > b[i]) else b[i]
解释:操作代码 if 正确的情况下 else 换值
象牙表达式
1 基本类型
Int 数字
支持带括号的四则运算
print((1+2)*3/6)
除四则运算外支持
//:根号
**:方
%:取余
支持比较大小
大于、小于、不等于
此数的二进制位数
print(123.bit_lenth())
变量强制转换
int(input("请输入数字:")+"123")
Str 字符串
单双引号适用但不能混用
#print('hello')
print("world")
如果单双引号都在字符串中使用
用“\”来转义括号两边的引号
用“\”来转义括号两边的引号
*建议单字符用单引号,多字符用双引号
三个引号用来多行显示
s3 = '''今天我想写首小诗,
歌颂我的同桌,
你看他那乌黑的短发,
好像一只炸毛鸡。'''
歌颂我的同桌,
你看他那乌黑的短发,
好像一只炸毛鸡。'''
*建议使用单引号
可字符串加/乘操作
a = "hello"
b = "world"
print(a + b)
b = "world"
print(a + b)
print((a+b)*3)
一些转义
print((a+b+'\n')*3)
print((a + '\t' + b)*3)
变量强制转换
转换数字:str(123)
input()函数输入类型为字符串型
可用Bool来判断字符串是否为空
格式化输出
%s 字符串
%d 数字
%d 数字
print("%s的学习进度%d%%"%(王烁然,100))
%%在格式化输出时可以打印出%
(起转义的作用:从保留字变正常)
(起转义的作用:从保留字变正常)
{} 大括号方法
print("{}{}{}".format('1',2,'a'))
print("{2}{1}{3}".format('1',2,'a'))
print("{a1}{a2}{a3}".format(a1='1',a2=3,a3='2'))
高级操作
切片
a = '012345'
s0 = a[0]
print(s0,type(s0))
s1 = a[-1]
print(s1,type(s1))
s0 = a[0]
print(s0,type(s0))
s1 = a[-1]
print(s1,type(s1))
左闭右开
s2 = a[0:5]
s3 = a[0:-1]
s2 = a[0:5]
s3 = a[0:-1]
支持单边省略
s4 = a[:5] --> 从开头开始
s5 = a[0:] --> 到结尾结束
s4 = a[:5] --> 从开头开始
s5 = a[0:] --> 到结尾结束
可以指定步长(不加默认为1)
s6 = a[0::2]
s6 = a[0::2]
可以倒序进行
s7 = a[-1::-2]
s7 = a[-1::-2]
【A:B:C】—— 要求:
A对应字符串位次比B大,C为负
A对应字符串位次比B大,C为负
长度
len(s2)
len(s6)
len(s6)
查找
count查找字符串中
有几个指定字符(串)
有几个指定字符(串)
b = " abcABCabccbaacbabccba"
print(b.count("cba",0,-1))
count("查找内容",字符串头索引,字符串尾索引)
print(b.count("cba",0,-1))
count("查找内容",字符串头索引,字符串尾索引)
注意:左闭右开
大小写转换
验证码等不分大小写场景
print(b.upper())
print(b.lower())
是否为何内容开始和结束
邮箱字母开头场景
b.startswith("abc")
b.endswith("cba")
字符串替换
全部替换字符串中内容
print(b.replace('b','B'))
print(b.replace('b','B'))
替换N次
print(b.replace('b','B',2))
print(b.replace('b','B',2))
字符串去除空白
print(b.strip())
去除左空白:lstrip()
去除右空白:rstrip()
去除右空白:rstrip()
字符串的字符间插入
print(' '.join(b))
判断字符串内容类型
字符及数字:b.isalnum()
字符:b.isalpha()
阿拉伯数字:b.isdecimal()
字符串转列表
Str to List
Str to List
abc = '你 是 谁'
t1 = a.split()
print(t1)
t1 = a.split()
print(t1)
以特定字符为间隔替换
ace = "我!是!我"
t2 = ace.split('!')
print(t2)
ace = "我!是!我"
t2 = ace.split('!')
print(t2)
仅N次替换 而不全部替换
t3 = ace.split('!',1)
print(t3)
t3 = ace.split('!',1)
print(t3)
Bool 正误
正确 代表1
print(2 > 1)
错误 代表0
print(3 < 1)
print(True,False)
变量强制转换
用来检测是否字符串为空
bool('') --> False
bool(' ') --> True
bool("王烁然") --> True
bool('') --> False
bool(' ') --> True
bool("王烁然") --> True
用来判断数字是否为0
bool(0) --> False
bool(1) --> True
bool(-1) --> True
bool(0) --> False
bool(1) --> True
bool(-1) --> True
支持多元赋值:a, b, c = 1, 2, "wsr"
a,b = b,a
查看此变量类型:type(123)
逻辑运算
支持not、and、or
not > and > or
print(2 > 1 and 3 < 4 or 4 > 5 and 2 < 1)
print(1 or 2) --> 1
print(0 or 3) --> 3
print(not True)
print(True and True, True and False)
print(False or False, True or False)
print(True and True, True and False)
print(False or False, True or False)
2 注释
单行注释 #
VSC:Ctrl + /
多行注释 三引号
*建议使用双引号
VSC:Alt + Shift +A
5 编码问题
编码和解码也就是 unicode 和 str 这两种形式的相互转化
编码是 unicode -> str,相反的,解码就是 str -> unicode
编码是 unicode -> str,相反的,解码就是 str -> unicode
将gb2312编码的字符串str1解码成unicode
str1.decode("gb2312")
将unicode字符串str2编码成utf-8编码
str2.encode("utf-8")
在Python 3中默认UTF - 8
None:一种特殊的类型
0 条评论
下一页