python序列

序列

序列是Python中最基本的数据结构。
Python中的序列包括列表、元组、字符串、字典、集合

列表

列表的定义

列表中的数据可以有不同的类型,并且元素可以重复
li=[1,2,3,"jiayou"]

访问列表中的值

使用下标索引来访问列表中的值 索引 从0开始 li[0]
切片 语法[i : n : m] i 是切片的起始索引值,n 是切片的结束位置,m 是步长,当m为负数时,列表反转。
例:

li=[1,2,3,"jiayou"]
print(li[:])
print(li[1:])
print(li[:3])
print(li[::-1])
print(li[:2:2])

更改列表

增加列表元素

使用append()方法来添加列表项
list.append('Google')
使用extend()方法添加可迭代对象
list.extend([1,2,5])
使用insert()方法在指定下标索引处添加元素(无返回值,直接改变列表)
list.insert(index, obj)

删减列表元素

del 删除del li[2]
使用remove()方法将指定元素删除(无返回值,直接改变列表)
list.remove("jiayou")
若有多个匹配元素,只会删除第一个;若指定元素不再列表中,会报错
使用pop()方法删除指定下标索引位置元素 默认为-1 返回值为从列表中移除的元素
list.pop(1)

其他方法

list.sort() reverse=True 降序 \quad 该方法没有返回值,但是会对列表的对象进行排序。
sorted(li) 不改变原来列表,返回排序后的列表
list.reverse()
list.index(obj) (obj,start,end)
list.count(obj)
len(list)
max(list)
li.clear()
copy()方法浅拷贝
li2=li1.copy() 若改变li1的值,不会影响li2

浅拷贝和深拷贝

浅拷贝:copy.copy() 是对一个对象父级(外层)的拷贝,并不会拷贝子级(内部)。
深拷贝:copy.deepcopy() 对一个对象是所有层次的拷贝(递归),内部和外部都会被拷贝过来。

列表加法
li1=[1,2,3]
li2=[4,5,6]
li=li1+li2
列表乘法

l=li*4 复制几次

列表推导式

li=[i for i in range(10)] 比循坏快很多 里面也可以加if语句
li=[i for i in range(10) if i%2==0]
也可加多个循环和if语句
li=[(x,y) for x in range(10) if x%3==0 for y in range(10) if y%3==0]
嵌套列表
li=[[1,2,3],[4,5,6]]
二位下标索引
li[0][1]

元组

元组的元素不能修改,(但如果元组中的元素为列表,列表仍是可以变的,)元素也是可以重复的
tu=(1,2,3,4)
元组中只包含一个元素时,需要在元素后面添加逗号 tup1 = (50,) 否则是数
也可通过下标索引和切片获取元素,但不可修改
tu.count(obj)
tu.index(obj)
加法和乘法同列表

字符串

字符串也可利用索引和切片进行获取
可用+与其他字符串进行连接
例:

var1 = 'Hello World!'
str=var1[:6] + 'Runoob!'

字符串函数

大小写转换

str.capitalize()第一个字母大写,其他字母小写
str.title() 所有单词首字母大写
str.swapcase()
upper()
lower()

对齐

str.center(width,obj)
ljust()
rjust()
zfill() (0填充左侧)

查找

str.count(obj,start,end)
str.find(obj)找到第一个 str.rfind()从右往左找 str.index(obj)

替换

str.replace(x,y)

检查

str.startswith(a,start,end) str.endswith(a,start,end) a可以是一个元组
istitle() isupper() islower() isalpha() isspace() isdigital()

截取

str.lstrip()左侧不留白 str.rstrip()右 str.strip() str.strip(str1)
str.removeprefix(str1) str.removesuffix(str1) 前后缀
str.split(a) 指定分隔符 列表
str.join(str1,str2,str3) str是作为分隔符连接 一般来说str为空""

格式化

  1. format格式化
    例:
"{}的工作是{}".format(name,job)
  1. %方式
    例:
"My name is %s and weight is %d kg!" % ('Zara', 21) 

%.2f

字典

字典中元素一一对应,不重复

d={'name':'刘德华','age':'30'}
print(d['name'])

创建字典

第一种方法

dic3 = dict( name = '刘德华', age = 30, sex = '男')

第二种方法

li = [('name', '刘德华'), ('age',30), ('sex', '男')]
dic2 = dict(li)

第三种方法

list1 = ['name', 'age', 'sex']
list2 = ['刘德华', 30, '男']
dic4 = dict(zip(list1, list2))

增删改查

增改:d['name']='张国荣'
update()方法
d.update({'name'='王菲',age='40'})
d.update(name='王菲',age='40')
删:d.pop('name','没有') 返回的是删除的值
d.popitem() 返回的是键和值
del d['name']
d.clear()
查:d.get('name','没有')

字典视图对象

items() keys() values()

d={'name':'刘德华','age':'30'}
items=d.items()
keys=d.keys()
values=d.values()
len()
'name' in d
'age' not in d
list(d)   得到字典所有键的列表
list(d.values())  得到字典所有值的列表

字典推导式

d={'name':'刘德华','age':'30'}
d1={k:v for k,v in d.items()}
d2={x:ord(x) for x in 'fish'}

集合

s={1,2,3,4} 集合是无序的,不能重复(唯一性)
s=set(‘fish’)
s=set([1,2,3])

集合运算

并集
s.union({1,2,3}) |
交集
s.intersection(s1,s2) &
差集
s.difference(s1,s2) -
对称差集 ^
s.symmetric_difference(s1) 只能单参数 排除共同元素后的集合
子集
s.issubset(s1) <= <
超集
s.issuperset() >= >

增删改

update()方法 单个拆开加入
s.update([1,1],'fish')
结果s={1,‘f’,‘s’,‘h’,‘i’}
s.intersection_update(s1)
s.difference_update(s1)
add()方法
s.add(‘fish’) 作为一整个加入
s={‘fish’}
s.remove(obj)方法
s.discrad(obj)
s.pop()随机弹出元素
s.clear()清空

序列通用

类型转换

list()
tuple()
str()

序列函数

enumerate(obj,i) 将可迭代对象obj中的每个元素及从i开始的序号共同组成一个二元组 返回的也是一个迭代器对象 list(enumerate(obj,i))
例:

li=['A','B','C']
enumerate(li)
list(enumerate(li))

输出:[(0,'A'),(1,'B'),(2,'C')]

li=['A','B','C']
enumerate(li,2)
list(enumerate(li,2))

输出:[(2,'A'),(3,'B'),(4,'C')]
zip() 将多个可迭代对象聚合打包,返回的也是一个可迭代对象

li1=['A','B','C']
li2=['a','b','c']
zip(li1,li2)
list(zip(li1,li2))

输出:[('A','a'),('B','b'),('C','c')]
若li1与li2长度不一样,以短的那个为准,不想遗漏信息,使用itertools.zip_longest(li1,li2,li3)
map(functiion,obj) 根据指定函数将可迭代对象每个元素进行计算,并返回计算结果
例:

a=map(ord,'fish')

输出:[23,45,78,90]
filter函数 与map类似,但结果返回迭代器对象 list(filter(str.islower,'Fish'))
输出:['i','s','h']

可迭代对象与迭代器区别

可迭代对象可以重复使用
迭代器是一次性的
x=iter(li)将可迭代对象转为迭代器 next(x)可以依次得到迭代器的元素

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值