目录
序列
1.切片
2.列表(list)
3.元组
数据类型转换
习题
好了,今天就开始序列的学习了,其实在C语言里面我们学过数组或者字符数组,Python中的序列跟它们一样是一种数据的储存方式,其中学习过程也是比较相似的,好了正式进入话题。
序列
概念
所以什么是序列?实际上就是一块可以存放多个值的内存空间,这跟C语言的数组是差不多的,都是一块可以存放多个值的连续内存空间。那序列也是分有序序列和无序序列,如果存放的值是按照顺序排列的那就叫有序序列,每个值所在的位置都有自己的编号(下标),可以通过所在的位置去找到它们;如果数据存放没有顺序的那就是无序序列,这没什么好讲的,很容易理解。
有序序列与无序序列的类型成员
有序序列有:字符串 ,列表,元组
无序序列有:集合,字典
我们学习一般重点去学习有序序列的,有序序列内容更加丰富。
序列的元素排序(下标)规则
从左往右:是从0开始的,依次递增
从you往左:是从-1开始的,依次递减
(以下演示内容我是在Python的IDLE里面进行演示,包括脚本模式和交互模式)
1.切片
很好理解 ,当我们要在序列里面去查询寻找一定范围的元素数据,我们可以通过切片把我们要找的东西切出来,让我们可以看到,就产生了一个新的序列
name[start:end:step]
序列名[始索引位置:结束索引位置:步长]
(1)获取一个值:
格式:
序列名[下标]
这里我想说明一下:这个下标是可以为负数,因为上面说过序列里面可以从左往右从0开始依次递增,也可以从右往左即-1开始依次递减
我们之前讲的字符串其实就是序列的一种,比如str='吃饭了没有' 那如果我想要找出里面其中的一个字比如 '饭' 这个字那我们就可以通过切片去找出来。
从左往右(依次递增):
从右往左(依次递减):
很简单,直接输出str[下标] 就行了跟C语言的字符串差不多。
(2)获取多个值
格式:
序列名[起始值:终点值]
还是那句话str='吃饭了没有' 这里我如果想要输出 '没有' 这两个字,我们同样可以通过切片把这个str 里面的内容切出来,同样跟上面一样,也是有从左往右与从右往左去输出。
从左往右:
从右往左:
这里我解释一下,因为从右往左是从-1开始的,如果我写入a=str[-2:-1] 实际上会输出一个‘没’ 字,后面的就没有了,按照位置来算最后一个‘有’ 是第-1的位置,所以我们可以通过a=str[-2:]来表示从第-2这个位置进行开始切直到这个字符串结束,那么就会有人去问我直接a=str[-2:0] 不就行了么,但是别忘了,这个的终止位置是0,在没有设置步长的时候计算机默认是从左到右依次递增的顺序来计算的,也就是说我如果a=str[-2:0],是从-2这个位置开始依次加一,直到加到0,那么0位置是第一个字符的位置,但是我的-2位置对应的正数位置('吃饭了没有')是第3位,所以实际上我是从0每次加1直到到3,这可能吗?不可能的,所以输出结果为空。
规律
当切片取到最后一个值的时候就可以省略终点值的下标(包头不包尾)
当切片该值为第一位的时候就可以省略起点值的下标(包尾不包头)
当切片的终点值大于这个字符串最后一个字符的位置值时,结果输出是从起点到这个字符串最后一个字符(越界当做尾)
示例如下:
1.
( 这里可以看到我完整输出这个字符串,可以用str[:] 直接输出,其实这里没有进行切片,所以默认输出完整字符串)
2.
(这里可以看出'为人民服务' 这个字符串最后一个字符'务' 的位置是4,然而这里print(str[1:8])很明显已经越界了,但是输出结果是从起点直到这个字符串结束,这就是越界当做尾)
(3)步长取值(字符串)
格式:
name[start:end:step]
序列名[始索引位置:结束索引位置:步长]
刚刚说过,python中:表示在切片中每隔几个位置去取一次元素,当步长为1的时候可以省略掉 ,如果我们没有去设置步长的时候系统默认取值方向是从左到右依次递增的,这里我们可以在范围取值的过程加上步长,就是每隔几个位置取一个字符形成新的字符串,然后输出。
示例:str='你是个小可爱' 对这个字符串操作,输出 : 你个可
这里我们可以看出当我设置步长为2的时候就可以实现每隔一个进行输出,实际上就是从0开始每数两个然后输出直到这个字符串末尾,最后输出的位置有:0,2,4, (所以结果是:你个可)
当然了,步长还可以设为负数的呢,也就是反向输出,比如我让这个字符串倒序输出:
看吧非常简单,3行就搞定了,连循环都不需要,如果是在C语言的话一般都要用到循环,或者用到其他函数,在Python就非常简单了,直接设置步长为-1,从默认位置0位置开始,倒序输出直到这个字符串全部遍历结束 。
知识点:如果不去设置引索起始位置或者终止位置的值的话,解释器会默认从改位置开始直到整个序列全部遍历结束
2.列表(list)
概念:
列表是一个可以存放多个值的容器,是属于有序序列
定义列表:
使用 列表名=[ ] 创建列表后,一般使用=将它赋值给某个变
示例:
用type函数可以查看出整个num的数据类型是列表,输出结果也就是一个列表,这也就实现了列表的创建。
列表是有序序列,属于列表是有下标值的(位置),所以我们可以通过上面讲到的切片法去查找我们想要的结果。
这里就给一个示例了,其实方法跟上面一样的,同样也可以去设置步长等等……
列表的数据类型;
列表里面的元素可以是Python支持的所有数据类型
列表的嵌套:
列表里面,还可以再放列表 ,进行列表的嵌套
列表的修改:
列表是可以进行修改的,我们可以通过列表的下标进行修改某一个位置的值
3.元组
元组的表现形式为用()小括号包裹起来的数据,里面的数据用,逗号隔开 。
格式:
元组名 = (数据1,数据2, ……)
同样元组也是可以用切片法进行数据处理,这里就不多说了。
注意事项:
如果一个元组里面只要一个元素的时候,必须在末尾加上逗号,不然解释器不会认为该类型是一个元组
示例如下:
元组与列表的区别:
1.元组是小括号,列表是中括号
2元组的数据是不可变的,列表的数据是可变
数据类型转换
把数据转换为别的类型就叫数据类型转换
int(x):将 x 转换成整数类型
float(x):将 x 转换成浮点数类型
str(x):将 x 转换为字符串
bool(x):把x转为布尔类型
list(x):把x转为列表
tuple(x) : 把x转为元
示例:
这个就是把字符串类型转换为int类型,然后进行数学运算。在没类型转换之前是纯粹的字符串拼接'12' 后面接上 '3' 然后输出'123' 进行int类型转换之后就是12+3=15
习题
1.列表的可以存放什么数据?
2.定义一个列表,列表中有2种数据类型,取出列表的每一个元素数据类型.
3.输出'欲穷千里目,更上一层楼',其中逗号后面要换行
4.str1='你真是小可爱呀',取出'你是可呀'
5.简述列表与元组的区别
6.当元组中元素只有一个的时候该如何定义
7.times = '20230201',输出格式为 结果为:2023年02月01日
兄弟们,感觉做做吧!!
答案
#Pyhon 学习 day3
#1
# Pyhon所有数据类型
#2
lists=[1,1.5]
print(type(lists[0]),type(lists[1]))
#3
print('欲穷千里目,\n更上一层楼')
#4
str1='你真是小可爱呀'
print(str1[::2])
#5
#(1)列表是用[]表示的,元组是用()表示的
#(2)列表是可修改的,元组是不可修改的
#6
#要在后面加上逗号,比如str1=(1,)
#7
times = '20230201'
print(times[0:4]+'年'+times[4:6]+'月'+times[6:]+'日')
好了,这一期就讲这么多了,记得给个赞哦!!!