05-01-数字及字符串进阶
1.数字型的三种类型
整数int;浮点数float;
复数complex:a=1+3j
2.赋值运算符
运算符 | 描述 |
---|---|
= | 把右侧的运算对象赋值给左侧的运算对象 |
+= | a+=b等同于a=a+b |
-= | a-=b等同于a=a-b |
*= | a*=b等同于a=a*b |
/= | a/=b等同于a=a/b |
**= | a**=b等同于a=a**b |
//= | a//=b等同于a=a//b |
a=1
b=2
a+=b #a=a+b
print(a)
3
3.字符串中字符的获取
获取单个字符:print(name[0])
切片获取子字符串
(1)print(name[n:m]),取n~m-1子字符串
l='happynewyear'
print(l[0:5]) #包括0不包括5
print(l[3:6]) #包括3不包括6
happy
pyn
(2)print(name[n:m:s]),在n-m之间,以s为步进的子字符串
n之后是n+s,n+2s,n+3s.
l='happynewyear'
print(l[1:6:2])
apn
(3)print(name[::-1])
冒号前不加任何值,则默认从第一个元素开始取值;
冒号后不使用任何下标值,则切片操作一直执行至字符串末尾;
以-1位步进值,则以倒序的方式输出;
l='happynewyear'
print(l[:6]) #左边省,从0开始到6
happyn
l='happynewyear'
print(l[3:]) #右边省,从3开始到结尾
pynewyear
l='happynewyear'
print(l[::2]) #左右都省且有2,从第一个开始,每2个取一个
hpyeya
4.字符串的不可变性
不可以改变字符串中的任何元素,如需改变则需要新建一个字符串
s='abcdefg'
s[0]='p'
因为字符串不可更改,以上不正确
5.字符串的转义
转义字符 | 含义 |
---|---|
\ | 反斜杠符号 |
\b | 退格 |
\n | 换行 |
\t | 制表符 |
\000 | 空 |
s='hello\npython' #反斜杠代表换行
print(s)
hello
python
s='I\'m lilei' #反斜杠加单引号为表示引号,作区分
print(s)
I'm lilei
05-02-列表及字典进阶
1.切片获取列表中连续的几个元素
(1)[起始位置:结束位置]
注意:不包括结束位置那个元素
l=[1,2,3,4,5,6]
print(l[2:5])
[3, 4, 5]
(2)[起始位置:结束位置:步长]
l=[1,2,3,4,5,6,7,8,9]
print(l[::-1]) #倒过来取
[9, 8, 7, 6, 5, 4, 3, 2, 1]
2.将字符串转换成列表
l=list('python')
print(l)
['p', 'y', 't', 'h', 'o', 'n']
3.列表的分片赋值
l=list('python')
l[2:]=['a','b','c']
print(l)
['p', 'y', 'a', 'b', 'c']
l=[1,5]
l[1:1]=[2,3,4]
print(l)
[1, 2, 3, 4, 5]
4.用dict函数创建字典
(1)根据其他序列新建字典
d=dict([('limei',98),('hanmeimei',99)])
print(d)
{'limei': 98, 'hanmeimei': 99}
(2)根据关键字参数新建字典
d=dict(lilei=98,hanmeimei=99)
print(d)
{'lilei': 98, 'hanmeimei': 99}
5.嵌套字典
嵌套:将一系列字典存储在列表中,或将列表作为值存在字典中
字典列表;
在字典中存储列表;
在字典中存储字典;
在字典中存储列表;
student1={'name':'李雷','age':18,'grade':98}
student2={'name':'韩梅梅','age':19,'grade':99}
student3={'name':'马冬梅','age':18,'grade':95}
student=[student1,student2,student3]
print(student)
print(student[1]['age']) #取student2中韩梅梅的age值
[{'name': '李雷', 'age': 18, 'grade': 98}, {'name': '韩梅梅', 'age': 19, 'grade': 99}, {'name': '马冬梅', 'age': 18, 'grade': 95}]
19
6.字典总结
创建字典 | 花括号/dict() |
---|---|
访问字典里的元素 | 利用中括号加要查询的key |
更新字典里的元素 | 通过key更改value |
字典里的删除操作 | 删除某个元素: del 字典[key];删除每个元素:字典.clear();删除字典本身:del字典; |
字典嵌套 | 字典列表;在字典里存储列表;在字典里存储字典 |
7.列表和字典的引用
python中的赋值可以理解为贴标签,创建数据时相当于把数据放到一个盒子里,进行赋值时相当于在这个盒子上贴一个标签,故以下更改l2,l1也会变。
l1=[1,2,3,4]
l2=l1
l2[0]=5
print(l1)
[5, 2, 3, 4]
解决办法:用.copy()克隆一个数据
(列表、集合、字典都可用)
l1=[1,2,3,4]
l2=l1.copy()
l2[0]=5
print(l1)
print(l2)
[1, 2, 3, 4]
[5, 2, 3, 4]
05-03-元组及集合
1.元组与列表
元组创建出来以后,只能读/取/切片,不能改(不可变)
列表中的元素可修改、添加、删除(可变)
a=[1,'hanmeimei',18] ———列表list[]
b=(2,'lilei',19)——元组tuple()
2.创建集合
集合:元素与元素之间不可重复
(1)直接用花括号创建集合
set1={1,1,2,2,3,4,5}
print(set1)
{1, 2, 3, 4, 5}
(2)使用set()方法
set1=set([1,2,4,1,2,8,5,5]) #注意set()里要加上[],否则将默认集合里只有一个元素
print(set1)
{1, 2, 4, 5, 8}
3.集合的交集(intersection)
用&运算符实现
set1={1,2,4,5,8}
set2={1,2,3,5,9}
print(set1&set2) #用&取交集
{1, 2, 5}
4.集合的并集(Union)
用|运算符实现
set1={1,2,4,5,8}
set2={1,2,3,5,9}
print(set1|set2)
{1, 2, 3, 4, 5, 8, 9}
5.集合的差集(Difference)
在set1中但不在set2中的元素
用-运算符实现
set1={1,2,4,5,8}
set2={1,2,3,5,9}
print(set1-set2)
{8, 4}
6.集合的对称差集(Symmeteic Difference)
在set1中或在set2中,但不同时存在于两个集合中的元素
用^运算符实现
set1={1,2,4,5,8}
set2={1,2,3,5,9}
print(set1^set2)
{3, 4, 8, 9}
7.集合操作回顾总结
操作 | 运算符 |
---|---|
并集 | l |
交集 | & |
差集 | - |
对称差集 | ^ |
思考:对称差集可以用其他三种集合操作来实现吗?如何实现?
set1={1,2,4,5,8}
set2={1,2,3,5,9}
print((set1|set2)-(set1&set2)) #先取并再取交,再做差集
{8, 9, 3, 4}