day-3 序列类型与基本运算符
一,序列类型的特性
序列其实是一块可以存储多个数据的内存空间 这些数据按一定的顺序排列 可以通过每个值所在一个位置的编号去访问他们 (序列类型就是可以存储多个数据的一种类型)
网吧 1/2
小北 首先前台 小北同学几号机子
序列类型 又有序类型:每个序列中每个数据都有对应的下标
下标:
网吧对应的机子号 方便查找和网吧管理 可以理解ip 坐标
军训时候报数 123456 第一个值1
计算机报数 0123456 第一值为0
索引:
知道下标后想要获取这个数据 这个操作就叫索引
语法格式: 变量名[下标]
name='宋权峻同学非常帅'
# 0 1 2 3 4 5 6 7
# -8 -7 -6 -5 -4 -3 -2 -1
#print(name[7])
#print(name[3])
#print(name[-5])
#print(name[-3])
print(name[1])
print(name[-7])
切片
切片就是当我们需要序列中某一段或者某一个值的时候 就可以使用切片 进行操作
说人话: 我只要我需要的一部分 西瓜我只要一半另一半不要
语法格式:变量名[起始值:终点值] #冒号为英文
#切片
#切片取值包头不包尾 取头不取尾 简单来讲就是切片的终点实际上是到他的前一位
#终点在实际数据上加1
#print(name[0:2])
#print(name[0:3])
#print(name[0:4])
#print(name[6:11])
#print(name[6:12])
#起点值为空 默认从0开始
#终点值为空 默认取完
food='螺蛳粉臭豆腐火锅麻辣烫土鸡鸡公煲'
print(food[:3])
print(food[3:])
print(food[:])
print(food)
#print(food[16]) #超出索引范围会报错
print(food[5:18]) #切片可以超出范围
print(food[:-2])
步长:
相当于跳格子 想让步长跳几个格子步长就写几个 所以步长有规律
编程里的步长: 可以选择取数据的时候一次性隔几位
起始值和终点值尽量使用正向下标
语法格式:变量名[起始值:终点值:步长] #步长不写默认为1
#步长
food='螺蛳粉臭豆腐火锅麻辣烫土鸡鸡公煲'
print(food[3:11])
print(food[3:11:2])
print(food[::2])
print(food[::1])
print(food[2:8:]) #步长不写默认1
print(food[2:8:10]) #无论写了什么起点都有
print(food[6::4])
print(food[::-1]) #倒序
总结:序列类型的特性: 下标 索引 切片 步长
二,列表与元组
列表(list)
列表的表示形式为用[]中括号包裹起来的数据 里面的数据用逗号隔开
语法格式: 列表名=[数据1,数据2]
#列表
#列表可以放任意数据
#talk=['美女',99,5.20,True]
#print(talk)
#列表里放列表
#talk1=['帅哥',100,99,talk,'刘天成']
#talk2=['帅掉渣',['婷婷',520],666]
#print(talk2)
#print(talk2[1])
#print(talk2[2])
#print(talk2[1][0])
#print(talk1[3][2])
#列表修改
#talk=['美女',99,5.20,True]
#talk[1]='婷婷很美'
#print(talk)
元组(tuple)
元组的表示形式为用()小括号包裹起来的数据 里面的数据用逗号隔开
语法格式: 元组名=(数据1,数据2)
#元组
talk=('美女',99,5.20,True)
#talk[1]='婷婷很美' 元组不能修改
#print(talk)
#print(talk[0])
元组的用法和列表相似 但是有两个区别:
1.元组是小括号 列表是中括号
2.元组里的数据是不能被修改的
如果你保存的数据 后续可能修改 -- 列表
如果你保存的数据 后续不可能修改 -- 元组
type查询函数类型
type是查询类型的作用
>>> age=(18)
>>> print(type(age))
<class 'int'>
>>> age=(18,)
>>> print(type(age))
<class 'tuple'>
元组里只有一个数据也是要加逗号
否则不会被认为是元组类型
>>> a=17
>>> name='婷婷'
>>> food=True
>>> print(type(a))
<class 'int'>
>>> print(type(name))
<class 'str'>
>>> print(type(food))
<class 'bool'>
三,基本运算符
算术运算符
跟数学优先级(先乘除后加减)
+ | 加 |
---|---|
- | 减 |
***** | 乘 |
/ | 除 (得到的结果为浮点型) |
% | 取余 |
// | 整除 |
****** | 幂(乘方) |
% 取余 10%3
# 10-3-3-3=1最后剩下的结果就是取余数
// 整除 10//3
#10-3-3-3=3直到你减不下去为止 减了几次数值就是几次
** 幂(乘方)3**3 3的3次方
#3*3*3
>>> a=5
>>> b=6
>>> a+b
11
>>> c=a+b
>>> c
11
>>> a-1
4
>>> a*b
30
>>> a*20
100
>>> a/b
0.8333333333333334
>>> a=8
>>> b=4
>>> a/b
2.0 (特殊情况 除以的结果为浮点型)
赋值运算符
赋值符号的左边必须是一个变量名
需要赋值给谁 就把谁放在左边
= | 赋值运算符 | c = 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//=b= => > a=a//b |
* *= | 幂 | *a *=b= => > a=a * * **b |
>>> a=8
>>> b=8
>>> a=a+b
>>> a
16
>>> a=8
>>> b=8
>>> a+=b
>>> a
16
注意位置
>>> a=5
>>> b=10
>>> a=a/b
>>> a
0.5
>>> a=5
>>> b=10
>>> b=a/b
>>> b
0.5
>>> a=5
>>> b=10
>>> a/=b
>>> a
0.5
>>> a=3
>>> b=3
>>> a=b=2
>>> a
2
>>> b
2
# 当a=5/b=8 想给他们换一下
>>> a=5
>>> b=8
>>> c=a
>>> a=b
>>> b=c
>>> a
8
>>> b
5
>>> a,b=b,a (变量值交换 )
a=5 b=8
比较运算符
得到结果bool类型
> | 大于 |
---|---|
< | 小于 |
== | 等于 |
>= | 大于等于 |
<= | 小于等于 |
!=(英文符号) | 不等于 |
>>> 66>88
False
>>> a=66
>>> b=88
>>> a>b
False
>>> b<=a
False
>>> b>a
True
>>> a != b
True
>>> a==b
False
>>> a='66'
>>> b=66
>>> a==b
>>> a>b
False (字符串和整数不能相对比 相当于同名同姓的人不是同血缘关系)
>>> a>b (可以比较是否相同 不能比大小)
>>> a='123' (同类型的可以一个一个做比较)
>>> b='124'
>>> a>b
False
>>> b>a
True
>>> a='-1'
>>> b='-2'
>>> a>b
False
>>> a=-1
>>> b=-2
>>> a>b
True
逻辑运算符
代码 | 含义 |
---|---|
and | 与 and左右两边的值必须都为真的时候才为真,否则为假 |
or | 或 or左右两边的值其中有一个真即为真,全假才为假 |
not | 非 就是将值为真的变成假的 假的变成真的 |
>>> True and False
False
>>> True and True
True
>>> not True
False
>>> not False
True
>>> not []
True
>>> not 1
False
>>> not 0
True
短路
and:当前面的值为假 , and就不往后面执行了
>>> True and True
True
>>> 1 and 2
2
>>> 1 and 0
0
>>> 0 and 1
0
>>> 0 and 0.0
0
>>> [] and 22
[]
or:当前面的值为真 , or就不往后面执行了
>>> 0 or 1
1
>>> [] or [25]
[25]
>>> 0 or []
[]
>>> 1 or []
1
>>> 22 or 66
22
>>> 22 or 0.0
22
and 前面为假时候 后面就不用执行
or 前面为真的时候 后面就不用执行
成员运算符
代码 | 含义 |
---|---|
in | 判断成员是否在序列中 |
not in | 判断成员是否不在序列中 |
>>> name='婷婷'
>>> print('婷婷' in name)
True
>>> print('123' in name)
False
>>> print('婷婷' not in name)
False
>>> print('123' not in name)
True>>> a='婷婷'
>>> print('婷婷' in a)
True
>>> print('婷婷' not in a)
False
in 右侧的内容里,是否包含了左侧的内容。 包含返回真,不包含返回假。
not in 右侧的内容里是否不包含左侧的内容。不包含返回真,包含返回假。
运算符优先级
先乘除后加减在判断
() | 小括号 |
---|---|
****** | 幂 |
*,/,//,% | 算术运算符 |
+,- | 算术运算符 |
<, >,<=, >=,==,!= | 比较运算符 |
in not in | 成员运算符 |
not> and> or | 逻辑运算符 |