找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
一、Python中的索引:序列[数字] 序列类型的数据类型有字符串,列表元组
索引是分正负的
1、正索引是从左往右数,从零开始
str1='asdfghjkl'
print(str1[0])    #获取str1中的索引位为0(顺数第1位)的值:a
print(str1[5])    #获取str1中的索引位为5(顺数第6位)的值:h
print(str1[9])    #因为str1中最大的索引位只有8,所以执行报错,报错:索引越界(string index out of range)

2、负索引是从右往左数,从-1开始
print(str1[-1])     #获取str1中的索引位为-1(倒数第1位)的值:l
print(str1[-6])     #获取str1中的索引位为-6(倒数第6位)的值:f
print(str1[-9])     #获取str1中的索引位为-9(倒数第9位)的值:a
print(str1[-10])    #报错:索引越界(string index out of range)



二、Python中的切片操作
1、切片是建立在索引的基础上。所以支持的数据类型也是:字符串、列表以及元组
2、切片的表达式为:序列[开始索引:结束索引:步长值n]即[start_index:end_index:step]n=1、2、3....n(n不能为0)
3、切片也分正负,是通过步长值进行控制,正步长从左往右取,负步长从右往左取
4、切片取开始索引至结束索引之前的值,但是是不取结束索引的值
5、步长不写的情况,默认值为1
6、开始索引不写的情况下,是从两头开始取起,到底取哪头,就看步长是正还是负
7、步长为1则挨个取,步长为2则隔一个取一个,步长为3则隔两个取一个,依次类推......
str1='asdfghjkl'
print(str1[1:2])      #对str1进行切片,截取索引位为1到索引位为2的值,不取结束索引,结果为:s
print(str1[0:5])      #对str1进行切片,截取索引位为0到索引位为5的值,不取结束索引,结果为:asdfg
print(str1[0:9:-1])   #没有结果,因为开始索引是0,结束索引是5,开始到结束本身就是从左往右,
                      #但是步长为-1,取值则从右往左,无法取值,所以执行无数据
print(str1[5:0:-1])   #对str1进行切片,截取索引位为5到索引位为0的值,通过负步长进行,不取结束索引,结果为:hgfds
print(str1[:2:-1])    #截取直接从末尾开始,结束索引位2的值,通过负步长进行,不取结束索引,结果为:lkjhgf
print(str1[:2:1])     #从开头开始截取到结束索引位2的值,通过正步长进行,不取结束索引,结果为:as
print(str1[0:8:2])    #截取索引位为0到索引位为8的值,通过步长为2进行截取,不取结束索引,结果为:adgj
print(str1[:8:3])     #从开头开始截取到结束索引位8的值,通过正步长3进行,不取结束索引,结果为:adj
print(str1[::2])      #不写开始和结束索引,就不存在结束索引不取的情况,通过正步长2进行(从开头取起),每隔1个取1个,结果为:adgjl
print(str1[-2:-9:1])     #结果为空,开始和结束索引的顺序是从右往左,但是步长却是从左往右,所以为空
print(str1[1:8:-1])      #结果为空,开始和结束索引的顺序是从左往右,但是步长却是从右往左,所以为空
print(str1[-3::])        #从开始索引-3开始取值,通过默认步长1,正步长从左往右取值 结果为:jkl
print(str1[-3::-1])      #从开始索引-3开始取值,通过负步长-1,从右往左取值,结果为:jhgfdsa
print(str1[::])          #不写开始和结束索引,就不存在结束索引不取的情况,通过默认步长1进行取值,结果为:asdfghjkl
print(str1[::-1])        #反转输出,通过切片设置步长为-1进行切片取值  结果为:lkjhgfdsa =====》面试题


三、Python中的字符串:字符串的定义是通过单引号或者双引号括起来表示
str1='asdfghjkl'
str2='qwert'
a=1
print(type(str1))        #<class 'str'>
print(type(str2))        #<class 'str'>
print(type(a))           #<class 'int'>

Python中字符串常用的函数
1、capitalize 首字母大写
a、首字符会转换为大写,其他字符转换为小写
str1='DUOceshi'
print(str1.capitalize())           #Duoceshi
如果首字符非字母,首字符不会转换大写,后面所有字母都会转换为小写
str2='1DUOCeShi'
print(str2.capitalize())           #1duoceshi

2、title 首字母大写的第二种方式,标题化
会把非字母后的第一个字母转换为大写
str3='DUO ce shi'
str4='1DUO_Ce_Shi'
print(str3.title())
print(str4.title())

3、count 统计字符串中指定字符出现的次数
str3='DUO ce shi'
str4='1DUO_Ce_Shi'
print(str3.count('D'))    #结果为1
print(str4.count('_'))    #结果为2
print(str4.count('_',5,8))   #count函数结合着切片的方式进行统计指定字符的出现次数,结果为1

4、join 拼接函数
str3='DUO ce shi'
str4='1DUO_Ce_Shi'
print('@'.join(str3))        #结果为:D@U@O@ @c@e@ @s@h@i
print(str4.join(str3))

list1=['1','2','3']
print(''.join(list1))      #通过一个空字符,使用join函数对list1中的字符元素进行拼接,结果为:123


5、split 分隔函数
str1='asdfasdfasdf'
print(str1.split('s'))      #对str1字符串中的s进行分隔,得出一个列表['a', 'dfa', 'dfa', 'df']
print(str1.split('s',1))     #对str1字符串中的s进行分隔,只能分隔一次,结果为['a', 'dfasdfasdf']

6、strip 删除某个字符串开头和结尾的指定字符的函数
str1='absadfa'
print(str1.strip('a'))       #删除字符串中开头和结尾的a字符
print(str1.strip('ab'))      #删除字符串中开头和结尾的a或b字符


7、lstrip 删除某个字符串开头的指定字符函数
str1='absadfba'
print(str1.lstrip('bas'))   #删除字符串中开头的bas字符

8、rstrip 删除某个字符串结尾的指定字符函数
print(str1.rstrip('a'))   #删除字符串中结尾的a字符

9、startswith 判断字符串是否以指定字符开头,返回布尔值
str1='Dbsadfba'
print(str1.startswith('a'))     #判断str1字符串是否以a开头
print(str1.startswith('ba'))    #判断str1字符串是否以D开头


10、endswith  判断字符串是否以指定字符结尾,返回布尔值
str1='Dbsadfba'
print(str1.endswith('a'))        #判断str1字符串是否以a结尾
print(str1.endswith('ab'))       #判断str1字符串是否以ab结尾

需求:判断上传的文件是否是xls文件
file_name=input('请上传xls文件:')
if file_name.endswith('.xls'):
    print('文件上传正确')
else:
    print('文件上传失败')

11、find 查找字符串中指定字符的索引位,从左往右搜索
如果查找的指定字符不存在,则返回-1
str1='absadfba'
print(str1.find('a'))            #查找str1中第一个a字符的索引位
print(str1.find('a',2,-1))       #查找str1中指定范围(从索引位2到索引位-1)的第一个a字符的索引位
print(str1.find('x'))            #查找str1中x字符的索引位,因为str1中的字符串没有x,所以返回结果:-1
index函数和find函数作用一样,不过如果字符串中不存在指定字符则报错
print(str1.index('a',2,-1))      #查找str1中指定范围(从索引位2到索引位-1)的第一个a字符的索引位
print(str1.index('x'))           #报错,字符串不存在x字符

12、rfind   查找字符串中指定字符的索引位,从右往左搜索
str1='absadfba'
print(str1.rfind('a'))
print(str1.rfind('a',0,6))
print(str1.rfind('x'))


13、 replace 替换函数
语法(原值,新值,替换次数)
str1='absadfba'
print(str1.replace('a','O'))         #如果不写替换次数,默认全部替换
print(str1.replace('a','U',1))       #写了替换次数,从左往右进行替换对应次数


14、upper 小写字母改为大写
str1='absadF1@ba'
print(str1.upper())      #把str1中的小写字母全部更改为大写

15、lower 大写字母改为小写字母
str1='absadF1@ba'
print(str1.lower())        #把str1中的大写字母全部更改为小写

16、isupper  判断字符串中的字母是否全为大写字母,返回的是布尔值
str1='absadF1@ba'
str2='ASDF1'
print(str1.isupper())   #因为str1里面包含小写的字母,所以返回False
print(str2.isupper())     #str2中的字母字符都是大写的,所以返回True

17、islower   判断字符串中的字母是否全为小写字母,返回的是布尔值
str1='absadF1@ba'
str2='asdf1'
print(str1.islower())   #因为str1里面包含大写的字母,所以返回False
print(str2.islower())     #str2中的字母字符都是小写的,所以返回True


18、isalnum 判断字符串是否以字母或数字组合,返回布尔值
str1='absadF1@ba'
print(str1.isalnum())     #因为str1中包含@符,所以返回False
str2='123'
str3='asdf'
str4='asdf1234'
print(str2.isalnum())        #因为str2纯数字,返回True
print(str3.isalnum())        #因为str3纯字母,返回True
print(str4.isalnum())        #因为str4只包含字母数字,返回True


19、isdigit  判断字符串是否以数字组合,返回布尔值
str2='123'
str4='asdf1234'
print(str2.isdigit())     #True
print(str4.isdigit())     #False

20、len 返回长度()
str4='asdf1234'
print(len(str4))         #str4字符串中包含8个字符,返回结果:8
list1=[1,2,'abc']
print(len(list1))       #因为list1中包含三个元素,所以结果返回:3

21、istitle 判断字符串是否标题化,判断非字母后的第一个字母是否为大写,
如果字符串中字母后面接大写字母则返回False
str1='Asdf Ghjk'
print(str1.istitle())


四、Python中的列表(list)
列表的两种定义方法
方法一:直接通过[]进行定义
list1=[1,2,3,4]
print(type(list1))

方法二:通过list()方法进行定义列表,但是写入的值只能是可迭代对象(字符串、元组、列表),不能直接写入数值、字典等对象
list2=list('1234')
print(list2)           #['1', '2', '3', '4']

print(list2[0])        #列表的索引操作
print(list2[::-1])     #列表的切片操作
print(len(list2))      #列表字符串统计

二维数组:在列表中包含列表的函数
list1=[1,2,3,['a','b','c']]
print(list1[3])          #如果索引获取list1中的索引位3的列表元素:['a', 'b', 'c']
print(list1[3][1])       #把获取到list1中的列表元素再次进行索引操作,获得二维数组中的具体元素:b

通过索引的方式去替换列表中的元素
list1=[1,2,3,['a','b','c']]
list1[3]='dcs'          #把list1中的索引位3的元素替换为‘dcs’
print(list1)             #结果为:[1, 2, 3, 'dcs']
通过切片的方式取替换列表中的元素
list1=[1,2,3,['a','b','c']]
list1[3:]='dcs'     #把list1中索引位3开始的元素进行替换,但是通过切片的操作时,赋值会被拆分元素,并添加到列表中
print(list1)        #结果为:[1, 2, 3, 'd', 'c', 's']


列表中常用函数
1、append 添加,默认添加到列表的末尾
l1=[1,2,3,4]
l1.append('gz')
print(l1)

2、extend 拼接列表
l1=[1,2,3,4]
l2=['a','b','c']
l1.extend(l2)    #在l1列表对l2列表进行拼接操作,不会对l2列表发生改变
print(l1)        #结果:[1, 2, 3, 4, 'a', 'b', 'c']
print(l2)        #l2未发生改变,结果:['a', 'b', 'c']

3、insert 插入值,根据索引值进行插入
l1=[1,2,3,4]
l1.insert(2,'dcs')
print(l1)
l1.insert(50,'a')  #插入值时超出索引位,则默认添加在列表的末尾
print(l1)

4、remove 删除列表中的元素
当列表中出现多个相同的元素则从左往右删除第一个
l1=[1,2,3,4,3,3,3,3]
l1.remove(3)
print(l1)
l1.remove('a')    #当删除一个列表中不存在的元素则会报错ValueError: list.remove(x): x not in list
print(l1)
l1.remove(l1[0])    #通过获取列表中对应索引的值进行remove删除
print(l1)

5、del  Python中的删除作用保留关键字
l1=[1,2,3,4,3,3,3,3]
del l1[2]              #结果为:[1, 2, 4, 3, 3, 3, 3]
print(l1)
del l1[10]     #报错:索引越界 IndexError: list assignment index out of range
print(l1)

6、index 获取索引位,从左往右搜索匹配到的第一个元素的索引位
l1=[1,2,'abc',3,4,'abc']
print(l1.index('abc'))     #从左往右搜索匹配到的第一个元素的索引位
print(l1.index('abc',3))   #从第3个索引位开始匹配检索对应元素的索引位,返回的也是匹配的第一个


7、sort 升序排序,默认是升序,可以通过修改成参数的值进行定义升序或者降序的操作
l1=[4,3,2,6,5]
l1.sort()
print(l1)         #[2, 3, 4, 5, 6]
l2=['a','b',9,6,7]
# l2.sort()          #执行报错,因为整型不能和字符串进行大小匹配,所以做不了排序查找
l3=['A','a','9','=','%','4','5']
l3.sort()            #纯字符也是可以进行排序的,通过ACSⅡ码的规则进行排序
print(l3)            #结果:['%', '4', '5', '9', '=', 'A', 'a']
l3.sort(reverse=True)       #sort函数的降序操作,增加参数reverse=True
print(l3)             #结果为:['a', 'A', '=', '9', '5', '4', '%']
l3.sort(reverse=False)   #sort函数的升序操作,增加参数reverse=False
print(l3)             #结果为:['%', '4', '5', '9', '=', 'A', 'a']


8、sorted 排序函数
reverse=True是降序,reverse=False是升序
l3=['A','a','9','=','%','4','5']
print(sorted(l3,reverse=True))     #['a', 'A', '=', '9', '5', '4', '%']
print(sorted(l3,reverse=False))    #['%', '4', '5', '9', '=', 'A', 'a']

区别:sort函数是list类里面的方法,sorted函数不仅仅对列表器起作用,还可以对其他可迭代的对象起作用
例如:
str1='FHGHJKJffhjHg%#'
print(sorted(str1))      #结果:['#', '%', 'F', 'G', 'H', 'H', 'H', 'J', 'J', 'K', 'f', 'f', 'g', 'h', 'j']
print(sort(str1))        #结果:报错,NameError: name 'sort' is not defined


9、reverse 反转输出
面试题:说一下怎么对一个列表进行反转输出?
方法一:通过切片的方式,设置步长为-1
l3=['A','a','9','=','%','4','5']
print(l3[::-1])      #结果为:['5', '4', '%', '=', '9', 'a', 'A']
方法二:通过列表的自带函数reverse进行反转输出
l3.reverse()
print(l3)            #结果为:['5', '4', '%', '=', '9', 'a', 'A']

10、pop函数
a.默认移除列表最后一个元素,并返回元素的值
b.移除指定位置的元素list1.pop(0)表示移除第一个元素
c.在列表中pop函数是唯一一个既能改变列表元素又有返回值
l1=['A','a','9','=','%','4','5']
print(l1.pop())      #可以通过pop函数获取被移除的值:5
print(l1)            #被移除之后的结果:['A', 'a', '9', '=', '%', '4']

print(l1.pop(2))     #pop通过索引的方式对列表进行操作
print(l1)


11、count 函数,统计列表中元素出现的次数
l1=['A','a','9','=','%','4','5','=']
print(l1.count('='))


12、clear 清除函数,清空列表
l1=['A','a','9','=','%','4','5','=']
l1.clear()
print(l1)    #结果:[]   空列表











max和min函数,获取最大和最小值
l1=[4,3,6,2,5]
print(max(l1))                #结果为:6
print(min(l1))                #结果为:2

l3=['A','a','9','=','%','4','5']  #字符串的最大值最小值也是通过ACSⅡ码的规则进行排序
print(max(l3))              #结果为:a
print(min(l3))              #结果为:%

str1='FHGHJKJffhjHg%#'
print(max(str1),min(str1))   #结果为:j #


五、Python中的元组(tuple)
定义元组:通过一对()进行定义
tup=('a',1,3,4)
print(type(tup))     #<class 'tuple'>

t=(1,)              #当元组中只有一个值的时候,后面要加逗号
print(type(t))


元组的常见操作
1、对元组转换为列表
tup=('a',1,3,4)
l1=list(tup)
print(l1,type(l1))       #['a', 1, 3, 4] <class 'list'>

2、对列表转换为元组的操作
l1=['a', 1, 3, 4]
tup1=tuple(l1)
print(tup1,type(tup1))     #('a', 1, 3, 4) <class 'tuple'>

3、对元组进行修改
tup=('a',1,3,4)
tup.insert(0,'d')           #报错,因为不能直接对元组进行修改

面试题:如何对Python中的元组进行修改?
我们可以通过把元组转换为列表的方式进行修改,修改完后再转换为元组
l1=['a', 1, 3, 4]
tup=('a',1,3,4)
l1=list(tup)          #先对元组tup转换为列表l1
l1.insert(0,'d')       #对l1进行数据输入
tup=tuple(l1)          #对修改后的l1列表转换为元组tup
print(tup)


面试题:元组和列表的区别
相同:
a、都是序列类型的容器对象,可以存放任何类型的数据
b、支持切片、迭代等操作
不同:
a、list 是可变的对象,元组tuple是不可变的对象
b、tuple不可变,所以使用tuple可以使代码更安全

面试题:
1、元组中的元素可以修改吗?
不可以,如果一定要修改,可以通过间接的方法修改,先把元组转换为列表进行修改,修改完后再转换成元组

2、元组和列表对比,哪个的数据处理速度更快?
元组更快,因为固定值比可变值要快


如果元组中存在列表元素,name里面列表元素是可变的
通过索引的方式去改变元组中的列表中的元素
tup=(1,2,3,['a','b','c'])
print(tup[3])           #['a', 'b', 'c']
tup[3][0]='AA'          #二维数组的方式改变元组中的列表中的值
print(tup)  

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册