JJJ:组合数据类型1

本文详细介绍了Python中序列(如字符串、列表、元组)的索引、切片操作,以及列表和元组的创建、删除、基本操作、区别,包括可变和不可变特性,以及列表特有的方法如append(),insert(),remove(),和元组的访问、遍历与生成式。
摘要由CSDN通过智能技术生成

序列的索引及切片操作 p42

序列
一个用于存储多个值的连续空间
每个值都对应一个整数的编号,叫做索引

索引分为:正向递增索引、反向递减索引
在这里插入图片描述

序列结构实例:
字符串、
列表、元组、(有序序列)
集合、字典(无序序列)

列表、元组、集合、字典这四个又被称为Python中的组合数据类型

# 使用索引去检索字符串中的元素

# 正向递增索引
s='helloworld'
for i in range(0,len(s)): #len()内置函数获取字符串的长度
    print(i,s[i],end='\t\t')
print()

# 逆向递减索引
for i in range(-len(s),0):
    print(i,s[i],end='\t\t')
print()

切片操作:
访问序列元素的一种方法
可以用于所有的序列类型

语法结构

序列[start:end:strp]

'''
start:切片的开始索引(包含)
end:切片的结束索引(不包含)
step:步长,默认为1
'''

切片实例:
在这里插入图片描述


s='helloworld'

# 切片操作
s1=s[0:5:2]
print(s1)

#省略了开始位置,start默认为0
s1=s[:5:1]
print(s1)

# 省略步长,默认为1
s1=s[0:5:]
print(s1)

# 省略结束位置,默认到最后
s1=s[0::1]
print(s1)

# 这两个等效,都是从5开始
print(s[5::])
print(s[5:])

# 若步长为负数,就是逆序输出,从最后一个索引开始往前打印,补偿绝对值作为步长
print(s[::-1])
print(s[-1:-11:-1])

关注一下步长作为负数的情况

序列的相关操作 p43

序列的相加和相乘操作

# 序列的相加操作
s='hello'
s2='world'
print(s+s2)

# 序列的相乘操作
print(s*5)

序列的其它操作符

操作符/函数描述说明
x in s若x是s的元素,结果为True,否则为False
x not in s与上面反过来
len(s)序列s中元素的个数(即序列的长度)
max(s)序列s中元素的最大值
min(s)序列s中元素的最小值
s.index(x)序列s中第一次出现元素x的值
s.count(x)x在序列s中出现的总次数
s='helloworld'
print('e在s中存在吗','e' in s)
print('v在s中存在吗','v' in s)

print('e在s中不存在吗','e' not in s)
print('v在s中不存在吗','v' not in s)

# 关于序列的内置函数的使用
print('len()',len(s))
print('max()',max(s))
print('min()',min(s))

# 序列对象的方法(使用序列的名称,打点调用)
print('s.index(x)',s.index('o')) # 'o'在s中第一次出现的位置
print('s.index(x)',s.index('v')) # 'v'在s中不存在,此时会报错

print('s.count(x)',s.count('o')) # 统计'o'在s中出现的次数

列表的基本操作 p44

一个序列类型

一系列按照特定顺序排列的元素组成
字符串类型、整数类型、浮点数类型都是不可变数据类型
列表是可变数据类型,又叫做可变序列

使用[]定义列表,元素和元素之间使用英文的逗号分隔
列表中的元素可以是任意的数据类型,元素与元素之间的数据类型可以不一致

列表的创建方式

1、
使用[]直接创建列表

列表名=[element,element2,...elementN]

2、
使用内置函数list()创建列表

列表名=list(序列)

列表的删除

del 列表名

代码示例

# 列表的创建和删除
# 第一种创建列表的方式
lst=['hello','world',98,100.5]
print(lst)

# 第二种创建列表的方式
lst2=list('helloworld')
print(lst2)
lst3=list(range(1,10,2))
print(lst3)
lst4=list(['1',2,'3'])
print(lst4)

# 列表式序列中的一种,对序列的操作符,运算符,函数均可以使用
print(lst+lst2+lst3)
# 序列的相乘
print(lst*3)
# 求序列的最大最小值
print(max(lst3))
print(min(lst3))
# 统计
print(lst2.count('o'))
# 查找
print(lst2.index('o'))
# 删除列表
del lst4

enumerate函数

for index,item in enumerate(lst):
	输出index和item

列表的特有操作 p45

列表的方法描述说明
lst.append(x)在列表lst最后一个元素
lst.insert(index,x)在列表中第index位置增加一个元素,index从0开始算
lst.clear()清除列表lst中所有元素
lst.pop(index)将列表lst中第index位置的元素取出,并从列表中将其删除,index从0开始
lst.remove(x)将列表lst中出现的第一个元素x删除
lst.reverse()将列表lst中的元素翻转,注意这个方法是没有返回值的,会反向lst的顺序
lst.copy()拷贝列表lst中的所有元素,生成一个新的列表

代码实例:

lst=['hello','world','python']
print('原列表:',lst)
print('原列表的内存地址:',id(lst))

# 增加元素的操作
lst.append('sql')
print('增加元素之后的列表:',lst)
print('增加元素之后的内存地址:',id(lst))
'''
增加元素后,内存地址没变,所以叫做可变数据类型
元素个数可变但内存地址不变
'''

# 在索引为1的位置插入100这个元素
lst.insert(1,100)
print(lst)
print(id(lst)) # 内存地址还是不变

# pop:先取出待删元素,再删除
print(lst.pop(1))
print(lst)
print(id(lst))

# 列表元素的删除操作
lst.remove('world')
print(lst)
print(id(lst))

# 翻转列表
print(lst)
print(id(lst))
lst.reverse()
print(lst)
print(id(lst))

# 列表的拷贝,会产生新的列表
new_lst=lst.copy()
print(new_lst)
print(id(new_lst))

# 列表元素的修改
print(lst)
print('lst[1]:',lst[1])
lst[1]='888'
print(lst)

# 清除列表中的所有元素
lst.clear()
print(lst)
print(id(lst)) # 内存地址依然没变

列表排序的两种方式:
1、列表对象的sort方式

lst.sort(key=None,reverse=False)
'''
key表示排序的规则
reverse表示排序方式,默认值是False,表示升序;True就是降序
'''

2、内置函数sorted()
注意这个函数是返回新的列表,不会改变原来的列表

sorted(iterable,key=None,reverse=False)
'''
iterable表示是排序的对象
'''

1、

lst=[4,56,2,78]
print('原列表:',lst)
lst.sort();
print('升序:',lst) # 排序是在原列表的基础上进行的,不会产生新的列表对象
lst.sort(reverse=True) # 降序
print('降序:',lst)

print('-'*66)

# 英文单词也可以排序,按照ascii码
lst1=['banana','apple','Cat','Orange']
print('原列表:',lst)
lst.sort();
print('升序:',lst) # 排序是在原列表的基础上进行的,不会产生新的列表对象
lst.sort(reverse=True) # 降序
print('降序:',lst)

print('-'*66)

# 忽略大小写,自己指定规则
lst1.sort(key=str.lower)
print(lst1)

2、

# 用 sorted() 函数会产生新的列表对象
lst=[4,56,3,78,40,56,89]
print('原列表:',lst)

# 排序
# 升序
lst2=sorted(lst) # 产生新的列表对象,默认是升序
print('升序:',lst2)
print('原列表:',lst)
# 降序
lst3=sorted(lst,reverse=True)
print('降序:',lst3)
print('原列表:',lst)

# 忽略大小写进行排序
lst4=['banena','apple','Cat','Orange']
print('原列表:',lst4)

lst5=sorted(lst4,key=str.lower)
print('升序:',lst5)

列表生成式及二维列表 p46

语法结构

lst=[expression for item in range]

lst=[expression for item in range if condition]

代码实例:

# 列表生成式的使用
import random
lst=[item for item in range(1,11)]
print(lst)

lst=[item*item for item in range(1,11)]
print(lst)

lst=[random.randint(1,100) for _ in range(10)]
print(lst)

# 从列表中符合条件的元素组成新的列表
lst=[i for i in range(10) if i%2==0]
print(lst)

二维列表:

for row in 二维列表:
	for item in row:
		pass

代码实例:

# 二维列表的生成和遍历

# 创建二维列表
lst=[
    ['城市','环比','同比'],
    ['北京',102,103],
    ['上海',104,504],
    ['深圳',100,39]
]
print(lst)

# 遍历二维列表,使用双层for循环
for row in lst:
    for item in row:
        print(item,end='\t')
    print()

# 列表生成式生成一个二维五列的链表
lst2=[[j for j in range(5)] for i in range(4)]
print(lst2)

元组的创建和删除 p47

Python中内置的不可变序列
使用()定义元组,元组的元素和元素之间使用英文的逗号分隔
元组中只有一个元素的时候,逗号不能省略

创建和删除

2种创建方式:
1、
使用()直接创建元组

元组名=(ele1,ele2,...,eleN)

2、
使用内置函数tuple()创建元组

元组名=tuple(序列)

删除:

del 元组名

代码实例:

# 元组的创建和删除

t=('hello',[10,20,30],'python','world')
print(t)

t=tuple('helloworld')
print(t)

t=tuple([10,20,30,40])
print(t)

print('10在元组中是否存在:',10 in t)
print('10在元组中是否不存在:',10 not in t)
print('元组t的最大值:',max(t))
print('元组t的最小值:',min(t))
print('元组t的元素个数:',len(t))
print('t.index:',t.index(10))
print('t.count:',t.count(10))

# 如果元组中只有一个元素,逗号不能省略,下面省略了t变成int了
t=(10)
print(t)
print(type(t))

y=(10,)
print(y)
print(type(y))


# 元组的删除
del t
print(t) 此时会报错

元组的访问和遍历 p48

# 元组元素的访问
t=('python','hello','world')
print(t[0]) # 索引访问元组
print(t[0:3:2]) # 支持切片操作

# 元组元素的遍历

for item in t:
    print(item)

for i in range(len(t)):
    print(i,t[i])

for index,item in enumerate(t):
    print(index,item)
    
for index,item in enumerate(t,start=11):
    print(index,item)

元组的生成式 p49

元组生成式的结果是一个生成器对象,需要转换成元组或列表才能查看元素内容

生成器对象中二维元素可以使用 __next__() 方法进行获取

# 元组生成式
t=(i for i in range(1,4)) # 这一步只产生了一个生成器对象
print(t)

print(t.__next__()) # 取出1
print(t.__next__()) # 取出2
print(t.__next__()) # 取出3
# 若上面取了三次,那么下面转换成元组,就什么都没有了

t=tuple(t)
print(t)

for item in t:
    print(item)

元组和列表的区别

元组列表
不可变序列可变序列
无法实现添加、删除和修改元素等操作append() insert() remove() pop() 等方法实现添加和删除列表元素
支持切片访问元素,不支持修改操作支持切片访问元素和修改列表中的操作
访问和处理速度快访问和处理速度慢
可以作为字典的键不能作为字典的键
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值