上篇文章说到序列内置基本函数,今天我们继续往下。
(h)列表与生成器
在学习其他数据结构之前,我们创建列表暂时使用简单的range()函数
a=range(10)#range为生成器,指向一个范围,生成的均为整数,从0开始
print(a,type(10))
a=list(range(10))#创建列表list
print(a,type(a))
输出结果:
(i)可变列表常用操作–添加元素
lst=list(range(10))#使用生成器生成列表lst
print(lst+[1,2,3])#生成新的列表,lst本身不变
print(lst)#输出原列表
lst.append('a')#改变了lst原始值
print(lst)#输出改变后的列表
a=[1,2,3]
b=[3,4,5]
a.append(b)#把b当成一个整体的元素加到a后面
print(a)
a.extend(b)#添加b中的元素
print(a)
输出结果:
(j)可变列表常用操作–删除元素
删除元素时我们用到常用remove()、del()、clear()等函数
lst=list(range(10))
print(lst)
lst.remove(5)#删除列表中值为5的元素
print(lst)
del lst[0]#删除列表中第一个元素
print(lst)
del lst[1:3]#删除切片
print(lst)
lst.clear()
print(lst)#删除整个列表
输出结果:
(k)可变列表常用操作–插入元素
lst=[0,8,9,4,5,3,1]
lst.insert(2,'a')#第二个索引后面插入a
print(lst)
lst.insert(3,[1,2,3])#在第3个索引后面插入列表【1,2,3】
print(lst)
输出结果:
(l)可变列表常用操作–复制元素
这里要注意直接赋值lst1=lst2与lst1=lst2.copy()的区别,采用copy方法生成的列表与原列表指向的索引不同,所以生成的列表是不随原列表变化而变化的
x=list(range(10))#创建列表
m=x#直接赋值
print(x)#输出x
print(m)#输出m
x[2]=100#更改列表x的元素值
print(x)#输出改变后的列表x
print(m)#m与x指向的索引一样,所以m会随x变化而变化
m=x.copy()#m与x指向的索引不一样,所以m不会随x变化而变化
x[3]=199
print(x)
print(m)
输出结果:
(l)可变列表常用操作–排序
排序主要使用sort()方法
lst1=list(range(10,20))
lst2=['abcd','asw','aaa','a']
lst1.sort()#从小到大排序
lst2.sort()#按字母顺序排序
print(lst1,lst2)
lst1.sort(reverse=True)#从大到小排序
print(lst1)
##sorted为排序并赋值的函数,不改变序列原来值
lst3=[1,22,33,55,11]
lst4=sorted(lst3)#从小到大排序,并不会改变lst3的值
print(lst3,lst4)
输出结果:
以上就是可变列表list的基本操作啦,下面我们看一下不可变列表元祖tuple
(2)不可变序列–元祖tuple
元祖tuple是Python中的一种数据类型,使用方法跟list类似,创建的时候直接使用‘()’来创建,元祖一旦创建便不可更改其长度和其中的元素,即是不可变的列表
我们来看几个简单的例子:
tup1=('physics','chemistry',1997,2000)#创建元祖1
tup2="a",'b','c','d'#创建元祖2,可以不加括号
tup3=(1,2,3,4,5)#创建元祖3
tup4=(50,)#元祖中只有一个元素时,需在后面添加逗号
print(tup1[2],tup3[:2])#索引,切片和list一样
del tup3#元祖不可单独删除元素,但可以用del语句删除整个元祖
print(len(tup1))#输出tup1的长度
print(tup1+tup2)#输出tup1+tup2
print(tup4*3)
print(max(tup2),min(tup2))
lst=list(range(10))
tup5=tuple(lst)
print(tup5)
输出结果:
(3)不可变序列–文本序列str
文本序列str是Python中非常要的一种数据类型,下面我们通过几个简单的例子来介绍它的用法
(a)创建文本序列str
a='abc'#通过单引号或双引号创建str
b="ad"
c='ab"dfr"'#单引号里嵌入双引号
d="abdf'rf'"#双引号里嵌入单引号
print(a)
print(b)
print(c)
print(d)
a='''hello,what do you want to do
I want eat something'''#多行时需要三引号
print(a)
输出结果:
(b)文本序列通用功能
print('a'in'abc')#判断是否存在
print('我很帅'+'yes')#文本连接
print('handsome '*4)#文本复制
st='abcdefgh'
#索引,切片,步长均和list一样
print(st[3],st[-1])
print(st[:2])
print(st[1:])
print(st.index('d'))#index()方法,求d的索引
print('st长度为:',len(st))#计算字符串长度
print('st长度为:'+ str(len(st)))#计算字符串长度
输出结果:
(c)文本序列常用功能–替换
st='i am handsome'#创建文本序列
st2=st.replace('handsome','ugly')#将st中的部分字符串换掉
print(st)
print(st2)
st1='hahahaha'
st2=st1.replace('ha','he',2)#只替换其中两个ha
print(st1)
print(st2)
输出结果:
(d)文本序列常用功能–拆分
拆分功能非常重要,常用于数据分析中的数据清洗,拆分等。
st='123,234,345,678'
lst=st.split(',')#对字符串中的‘,’进行拆分,直接生成列表
print(lst)
输出结果:
(e)文本序列常用功能–字符串连接
st='123,234,345,678'
lst=st.split(',')#对字符串中的,进行拆分,直接生成列表
m='-'
st2=m.join(lst)#将列表lst里面的值通过join()连接起来
print(st2)
输出结果:
(f)文本序列常用功能–判断开头结尾以及字母大小写转换
st='abcdefghijkEEE '
print(st.startswith('a'),st.endswith('a'))#判断是否以'a'开头,
#判断是否以'a'结尾
print(st.upper())#全部大写
print(st.lower())#全部小写
print(st.swapcase())#大小写互换
print(st.capitalize())#首字母大写
print(st.isnumeric())#如果st只包含数字则返回true,否则返回false
print(st.isalpha())#如果st至少有一个字符且所有字符均为字母,则返回True
print(st.rstrip())#删除字符末尾的空格
输出结果:
(g)文本序列常用功能–格式化字符
格式化字符对于后面做函数或数据处理都是十分有用的
name='Jenny'
truth='%s is friend'%name #%表示要插入一个变量(字符串),%name表示我们要插入的变量
print(truth)
x=4
y='hehe'
z=4.2
print('this is %i'%x)#%i表示插入int型数据
print('this is %s'%y)#%s表示插入str型数据
print('this is %f'%z)#%f表示插入float型数据
print('小明的成绩为%i,小红的成绩为%i'%(70,90))
输出结果:
(h)字符串格式化时一些特殊的操作
m=3.1415926
print('pi is %f'%m)
print('pi is %2f'%m)#输出两位小数,四舍五入
n=10.6
print('pi is %i'%n)#输出为整数,不四舍五入,只保留整数部分
print('pi is %0f'%n)
m=100
print('have fun %+i'%m)#显示正号
print('have fun %2f'%-0.01)#负号根据数字直接显示
print('have fun %i'%m)
print('have fun % +i'%m)
print('have fun % .2f'%-0.01)#空格和正负号只能显示一个
m=123.123123123123123333333
print('have fun %2e'%m)#科学计数法
print('have fun %4E'%m)
m1=10.2
m=123.123123123123123333333
print('have fun %g'%m1)#小数位数少的时候用浮点数,多的时候用科学计数法
print('have fun %g' %m)
输出结果:
以上就是序列及通用操作啦~