python学习笔记(10)——组合数据类型(1)

目录

一、组合数据类型

1.1 序列类型

1.2 集合类型

1.3 映射类型

二、元组

三、列表

3.1创建列表

3.2 访问列表元素

3.3 添加列表元素

3.4 元素排列

3.5 删除列表元素

3.6 列表推导式


一、组合数据类型

1.1 序列类型

        序列类型来源于数学概念中的数列,数列时按照一定顺序一列的一组数,每个数称之为这个数列的项,每项不是在其他项之前,就是在其他项之后。数列的索引从0开始,通过索引可以访问数列中的第n-1项。

        序列在数列的基础上进行了扩展,pthon中的序列支持双向索引,正向递增索引和反向递减索引。

        正向递增索引从左向右依次递增,第一个元素索引为0,第二个元素索引为1,以此类推。反向递减索引时从右到左以此递减,从左到右第一个元素为-1,第二个元素为-2以此类推。

        python中常用的序列类型主要有3中,字符串(str),列表(list),元组(tuple)。

1.2 集合类型

        数学中的集合是指具有魔咒特定性质的对象汇总而成的集体,其中组成集合的对象称之为该集合的元素。在表示法中通常使用大写字母表示集合,使用小写字母表示该集合中的元素。且集合中的元素具有以下三个特性:

1.确定性:集合中每个元素都是确定的。

2.互异性:集合中每个元素互不相同。

3.无序性:集合中的元素没有顺序,若多个集合元素顺序不同元素相同那么这类集合为同一集合。

        python中要求放入集合中的元素必须时不可变类型的(整型、浮点型、字符串类型、元组属于不可变类型列表、字典和集合本身属于可变数据类型).

1.3 映射类型

        映射类型以键值对的形式储存元素,键值对中的键与值之间存在映射关系,在数学中若A、B是两个非空集合,若按照某个对应法则可以使A中任意一个元素在集合B中都有位移的对应元素,则称该法则为集合A到集合B的映射。

        字典dict是python中位移的内置映射类型,字典的键必须遵循以下两个原则。

(1)、每个键只能对应一个值,不允许同一个键在字典中重复出现。

(2)、字典中的键是不可变类型

二、元组

        元组的表现形式一般报刊在圆括号“()”中,由逗号分的元素,元组中元素的个数类型不受限制

t1 = ()                #创建空元组
t2 = (1,)              #包含单个元素的元组,其中逗号不能省略
t3 = (1,2,3)           #包含多个元素的元组
t4 = (1,'c',("e",2))   #元组嵌套

使用内置函数tuple()也能创建元组

t1 = tuple()           #创建空元组
t2 = tuple([1,2,3])    #利用列表创建元组(1,2,3)
t3 = tuple('python')   #利用字符串创建元组('p','y','t','h','o','n')
t4 = tuple(range(3))   #利用迭代对象创建元组(0,1,2)

python可以通过索引和切片的方式访问元组元素,也支持在循环中遍历元组

t2 = tuple([1,2,3])    #利用列表创建元组(1,2,3)
t3 = tuple('python')   #利用字符串创建元组('p','y','t','h','o','n')
print(t2[1])           #利用索引方式访问元组元素
print(t3[2:5])         #利用切片方式访问元组元素
for data in t3:        #在循环中遍历元组
    print(data,end='')

运行结果如下:

三、列表

        python利用内存中的一段连续空间存储列表,列表时puthon中最灵活的序列类型,列表没有长度限制,可以包括任意元素,可以自由地对列表中的元素进行访问、添加、排序、删除等操作

3.1创建列表

1.使用中括号“[ ]”创建列表

        [ ]中包括的可以是列表元素(整形、浮点型、字符串),也可以是列表、元组、字典类型。列表元素的类型可以相同也可以不同。列表中的元素使用“,”分割开。

list_one = []                                   #空列表
list_two = ['a','b','c']                        #链表元素类型相同
list_three = ['a','1','b','2.1','#']            #列表元素类型不同
list_three = ['a','1','b','2.1','#',list_three] #列表嵌套

2.使用list()函数创建列表

        list()函数接收一个可迭代类型数据,并返回一个列表

list_one = list(1)      
list_two = list(A)
list_three = list(1,'A')

python中可迭代对象:

1、它是能够一次返回一个成员的对象,也就是可以 for…in 遍历的;
2、所有的序列类型(也就是后面要说到的 Sequence),都是可迭代对象,如 list、str、tuple,还有映射类型 dict、文件对象等非序列类型也是可迭代对象;
3、自定义对象在实现了 iter() 方法或者实现了 getitem() 方法后,也可以成为可迭代对象;
4、iter()方法接受一个可迭代对象,该方法的返回值是一个迭代器(Iterator)

3.2 访问列表元素

        列表元素可以利用索引和切片发方式访问,若在循环中可以通过以此访问。

1.以索引方式访问列表元素

 访问列表list中索引为n的元素是语法格式

list[n]

        因为正向递增索引从左向右依次递增,第一个元素索引为0,第二个元素索引为1,以此类推。反向递减索引时从右到左以此递减,从左到右第一个元素为-1,第二个元素为-2以此类推。

list_text = ['a','b','c','d','e']
print(list_text[2])
print(list_text[-4])

 运行结果:

 2.以切片的方式访问列表元素

        切片用于截取列表中的部分元素获取一个新的列表,一般通过按补偿step获取列表list中m~n的对应元素,stepdaughte默认为1:m和n可以省略,若m省略,表示切片从列表首部开始,若n省略表示切片到末尾结束。

示例代码:

list_text = ['a','b','c','d','e','f']
print(list_text[1:4:1])    #按步长1获取列表中索引1~4中的元素
print(list_text[3:])       #获取列表中索引3到末尾的元素
print(list_text[:4])       #获取列表中0~4的元素
print(list_text[:])        #获取列表中的所有元素

运行结果:

 3.在循环中以此访问列表元素

列表是一个可迭代的对象,在for...in...语句中逐个访问列表元素。

list_text = ['a','b','c','d','e','f']
for li in list_text:
    print(li,end='')

运行结果:

 4.查询列表元素

        通过使用in和not in对列表中元素进行查询,in可以判断某个元素是否存在于列表,not in可以判断某个元素是否不存在于列表。

li = ['a','b','c','d','e','f']
print('a' in li)
print('b' not in li)

运行结果:

3.3 添加列表元素

1.append()

        该函数用于在列表末尾处添加新的元素。

li = ['a','b','c','d','e','f']
li.append('g')
print(li)

 运行结果:

 2.extend()

        该函数用于在列表末尾一次性添加另外一个链表中的所有元素

li_one = ['a','b','c','d']
li_two = [1,2,3]
li_one.extend(li_two)
print(li_one)

运行结果:

 3.insert()

        该函数用于按照索引将新的元素插入到列表中的指定位置。

li_one = ['a','b','c','d']
li_two = [1,2,3]
li_one.insert(2,li_two)
print(li_one)

运行结果:

3.4 元素排列

1.sort()

用于按照指定的顺序对列表元素进行排序,语法格式:

sort(key=None,reverse=False)

        参数key用于指定排序规则,此参数可以是列表支持的函数,默认值为None:参数reverse用于控制列表元素排列的方式,该参数可以使取值True或是False,取值为True表示降序排列,取值为False表示升序排列。

        sort()对列表元素排序后有序的元素会付给原来的列表元素,不会产生新的元素。

li_one = [9,5,4,8]
li_two = [5,8,6,4]
li_three = ['four','two','three']
li_one.sort()               #升序排列
li_two.sort(reverse=True)   #降序排列
li_three.sort(key=len)      #len()函数可以计算字符串长度,按照列表中每个字符串元素的长度排列
print(li_one)
print(li_two)
print(li_three)

运行结果:

2.sorted()

用于升序排列列表元素,其方法的返回值是升序后的新列表,且不会覆盖原有列表、

li_one = [9,5,4,8]
li_two = sorted(li_one)
print(li_one)
print(li_two)

运行结果:

 3.reverse()

用于逆置列表,即八原链表中的元素从右到左以此排列存放

li_one = [9,5,4,8]
li_two = sorted(li_one)
li_two.reverse()
print(li_one)
print(li_two)

运行结果:

3.5 删除列表元素

1.del语句

 用于删除列表中的指定元素

li_str = ['one','two','three']
del li_str[1]
print(li_str)

运行结果: 

2.remove()

        用于删除列表中的某个元素,若列表中匹配到了多个目标元素remove()只能移除第一个匹配到的元素。

li_str = ['one','two','three']
li_str.remove('one')
print(li_str)

运行结果:

3.pop()

        用于移除列表中的某个元素,若未指定具体元素,则移除列表中最后一个元素。

numbers = [1,2,3,4]
print(numbers.pop())    #移除列表中最后一个元素
print(numbers.pop(1))   #移除列表中索引为1的元素
print(numbers)

 运行结果:

3.6 列表推导式

        列表推导式是一种复合表达式,它能以简洁的方式根据已有的列表构建处特定需求的列表。因为[]创建列表,列表推导式生成列表所以列表推导式常放在[]中

[exp for x in list]

for...in...用于遍历列表

exp用于每层循环中对列表中的元素进行运算。

例如求列表中每个数的平方:

numbers = [1,2,3,4]
numbers = [data*data for data in numbers]
print(numbers)

运行结果:

 1.带有if语句的列表推导式

[exp for x in list if cond]

主要功能:遍历列表,若列表中的元素x符合条件cond则按照表达式exp对其进行运算后添加至新的列表中。

numbers = [1,2,3,4]
numbers = [data*data for data in numbers if data>=4]
print(numbers)

 运行结果:

 2.带有for循环语句的列表推导式

[exp for x in list_one for y in list_two]

主要功能:for语句按照从左到右的顺序分别是外层循环和内层循环,利用此格式可以根据两个列表快速生成一个新的列表。

number_one = [1,2,3]
number_two = [4,5,6]
numbers = [x+y for x in number_one for y in number_two]
print(numbers)

运行结果:

 3.带有if语句和嵌套for循环语句的了表推导式:

列表推导式中嵌套for循环可以有多个,每个循环也都可以与if语句连用

语法格式:

[exp for x in li_1 [ifcond]

        for x in li_2 [ifcond]

        ...

        for x in li_1 [ifcond]]

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值