python学习笔记(三)

  • 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循环

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值