- list(列表)的遍历
1.while循环
既然数据容器可以存储多个元素,那么,就会有需求从容器内依次取出元素进行操作
将容器内的元素依次取出进行处理的行为,称之为:遍历、迭代
Index=0
while index<len(列表):
元素=列表[index]
对元素进行处理
Index+=1
2.for循环
for 临时变量 in 数据容器:
对临时变量进行处理
while循环和for循环对比
while循环和for循环,都是循环语句,但细节不同:
·在循环控制上:
·while循环可以自定义循环条件,并自行控制
·for循环不可以自定义循环条件,只可以一个个从容器内取出数据
·在无限循环上:
·while循环可以通过条件控制做到无限循环
·for循环理论上不可以,因为被遍历的容器容量不是无限的
·在使用场景上:
·while循环适用于任何想要循环的场景
·for循环适用于,遍历数据容器的场景或简单的固定次数循环场景
二、数据容器:tuple(元组)
为什么需要元组?
因为列表是可以修改的,如果想要传递的信息,不被篡改,列表就不合适了
元组同列表一样,都是可以封装多个、不同类型的元素在内,但最大的不同点在于:
元组一旦定义完成,就不可修改
定义元组
元组定义:定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型
#定义元组字面量
(元素, 元素, … ,元素)
#定义元组变量
变量名称=(元素, 元素, … ,元素)
#定义空元组
变量名称=() #方式一
变量名称=tuple() #方式二
【注意事项:
#定义的元组如果只有一个数据,这个数据后面必须要添加逗号,否则不是元组类型
t=(“hello”,)
】
#元组的嵌套
t=((1,2),(3,4))
#从嵌套元组中取出数据
print(t[0][0])
元组的相关操作
编号 | 方法 | 作用 |
1 | index() | 查找某个数据,如果数据存在返回对应的下标,否则报错 |
2 | count() | 统计某个数据在当前元组出现的次数 |
3 | len(元组) | 统计元组内的元素个数 |
【注意:通常情况下元组内的数据是无法修改的,但也存在特例,可以修改元组内的list的内容(修改元素、增加、删除、反转(reverse)等)】
例如:
t=('aaa',["1",2])
t[1][1]="我修改了"
print(t)
输出结果为:('aaa', ['1', '我修改了'])
元组的特点:
·可以容纳多个数据
·可以容纳不同类型的数据(混装)
·数据是有序存储的(下标索引)
·允许重复数据存在
·不可以修改(增加或删除元素等)【与list唯一不同】
·支持for循环
三、数据容器:str(字符串)
字符串是字符的容器,一个字符串可以存放任意数量的字符
如,字符串:”tazige”
字母对应的标号为:0,1,2,3,4,5(正向)
-6,-5,-4,-3,-2,-1(反向)
·从前向后,下标从0开始
·从后向前,下标从-1开始
【注意:字符串是一个无法修改的数据容器,所以:修改指定下标的字符,或者移除特定下标的字符再或者追加字符等,都是无法完成的,如果必须要做,只能得到一个新的字符串,老的字符串是无法修改的】
·查找特定字符串的下标索引值
语法:字符串.index(字符串)
例如:my_str = "lileiyuhanmeimei"
kk = my_str.index('lei')
print(kk)
输出结果为:2
·字符串的替换
语法:字符串.replace(字符串1,字符串2)
功能:将字符串内的全部:字符串1,替换为字符串2
注意:不是修改字符串本身,而是得到了一个新字符串
例如:my_str = "lileiyuhanmeimeilei"
kk=my_str.replace('lei', "fei")
print(kk)
输出结果为:lifeiyuhanmeimeifei
·字符串的分割
语法:字符串.split(分隔符字符串)
功能:按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中
注意:字符串本身不变,而是得到了一个列表对象
my_str = "lilei yu hanmeimeilei"
kk=my_str.split(' ')
print(kk)
输出结果为:['lilei', 'yu', 'hanmeimeilei']
·字符串的规整操作(去前后空格)
语法:字符串.strip()
my_str = " lilei yu hanmeimei "
kk=my_str.strip()
print(my_str)
print(kk)
输出结果为:
lilei yu hanmeimei
lilei yu hanmeimei
·字符串的规整操作(去前后指定字符串)
语法:字符串.strip(字符串)
注意,假如传入的是’12’其实就是:’1‘和’2‘都会移除,是按照单个字符
my_str = "123lilei yu123 hanmeimei213"
kk=my_str.strip("123")
print(kk)
输出结果为:lilei yu123 hanmeimei
·统计字符串中某字符串的出现次数,count
语法:字符串.count(字符串)
my_str = "lilei yu hanmeimei"
kk=my_str.count("mei")
print(kk)
输出结果为:2
·统计字符串长度,len(字符串)
my_str = "lilei yu hanmeimei"
kk=len(my_str)
print(kk)
输出结果为:18
总结,数据容器:字符串的特点:
·只可以存储字符串
·长度任意(取决于内存大小)
·支持下标索引
·允许重复字符串存在
·不可以修改(增加或删除元素等)
·支持for循环
四、数据容器:序列
序列是指:内容连续、有序、可使用下标索引的一类数据容器
列表、数组、字符串,均可以视为序列
索引(下标):
0,1,2,…,n-1
-n,-(n-1),-(n-2),…,-2,-1
序列的常规操作—切片
序列支持切片,即:列表、元组、字符串,均支持进行切片操作
切片:从一个序列中,取出一个子序列
语法:序列[起始下标:结束下标:步长]
表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列:
·起始下标表示从何处开始,可以留空,留空视作从头开始
·结束下标(不含)表示何处结束,可以留空,留空视作截取到结尾
·步长表示,依次取出元素的间隔
·步长1表示,一个个取元素
·步长2表示,每次跳过一个元素取
·步长n表示,每次跳过n-1个元素取
·步长为负数表示,反向取(注意,起始下标和结束下标也要反向标记)
【注意:对序列进行切片操作并不会影响序列本身,而是会得到一个新的序列(例如:元组与字符串都是不支持修改的)】
例如:
t = (0, 1, 2, 3, 4, 5)
res = t[:]
print(res)
输出结果为:(0, 1, 2, 3, 4, 5)
str = '0123456'
kk = str[::2]
print(kk)
输出结果为:0246
str = '0123456'
kk = str[::-1]
print(kk)
输出结果为:6543210(等同于将数列反转了)
my_list=[0,1,2,3,4,5,6]
kk=my_list[3:0:-2]
print(kk)
输出结果为:[3, 1]
总结:序列如何做切片
序列[起始:结束:步长]
·起始可以省略,省略从头开始
·结束可以省略,省略到尾结束
·步长可以省略,省略步长默认为1(可以为负数,表示倒序执行)
五、数据容器:set(集合)【去重】
基本语法:
#定义集合字面量
{元素, 元素, …..,元素}
#定义集合变量
变量名称={元素, 元素, …..,元素}
#定义空集合
变量名称=set()
和列表,元组,字符串等定义基本相同;
·列表使用:[]
·元组使用:()
·字符串使用:””
·集合使用:{}
集合是无序的,所以集合不支持:下标索引访问
但集合和列表一样,是允许修改的
·添加新元素
语法:集合.add(元素)。将指定元素,添加到集合内
结果:集合本身被修改,添加了新的元素
t={"maidang","tazimi","olei"}
t.add("wulanuosi")
print(t)
输出结果为:{'maidang', 'tazimi', 'olei', 'wulanuosi'}
·移除元素
语法:集合.remove(元素),将指定元素,从集合内移除
结果:集合本身被修改,移除了元素
t={"maidang","tazimi","olei"}
t.remove("olei")
print(t)
输出结果为:{'tazimi', 'maidang'}
·从集合中随机取出元素
语法:集合.pop(),功能:从集合中随机取出一个元素
结果:会得到一个元素的结果。同时集合本身被修改,元素被移除
t={"maidang","tazimi","olei"}
t.pop()
print(t)
输出结果为:
第一次执行:{'olei', 'tazimi'}
第二次执行:{'tazimi', 'maidang'}
随机取出
·清空集合
语法:集合.clear(),功能:清空集合
结果:集合本身被清空
t={"maidang","tazimi","olei"}
t.clear()
print(t)
输出结果为:set()
·取出2个集合的差集(difference)
语法:集合1.difference(集合2),功能:取出集合1和集合2的差集(集合1 有而集合2没有的)
结果:得到一个新集合,集合1和集合2不变
set1={1,2,3,4}
set2={4,5,6,7}
set3=set1.difference(set2)
print(set3)
输出结果为:{1, 2, 3}
·消除2个集合的差集
语法:集合1.difference_update(集合2)
功能:对比集合1和集合2,在集合1内,删除和集合2相同的元素
结果:集合1被修改,集合2不变
set1={1,2,3,4}
set2={4,5,6,7}
set1.difference_update(set2)
print(set1)
输出结果为:{1, 2, 3}
·2个集合合并
语法:集合1.union(集合2)
功能:将集合1和集合2组合成新集合
结果:得到新集合,集合1和集合2不变
set1={1,2,3,4}
set2={4,5,6,7}
set3=set1.union(set2)
print(set3)
输出结果为:{1, 2, 3, 4, 5, 6, 7}
·统计集合元素数量len()
set1={1,2,3,4}
print(len(set1))
输出结果为:4
·集合的遍历
集合不支持下标索引,不能用while循环,可以用for循环
set1={1,2,3}
for k in set1:
print(k)
输出结果为:
1
2
3
总结:集合的特点:
·可以容纳多个数据
·可以容纳不同类型的数据(混装)
·数据是无序存储的(不支持下标索引)
·不允许重复数据存在(最主要的特点)
·可以修改(增加或删除元素等)
·支持for循环