字符串和列表的内置方法、可变类型与不可变类型和队列与堆栈

今日总结

  • 字符串的其他内置方法

  • 必须了解操作

  • 列表的内置方法

  • 可变类型与不可变类型

  • 队列与堆栈

字符串的其他内置方法

1 、移除字符串首尾的指定字符,可以自定义移除的方向

    strip(移除用语)
    rstrip(右边移除)
    lstrip(左边移除) 
 用法:   
# s1 = '***owen***'
# print(s1.strip('*'))  # owen
# print(s1.rstrip('*'))  # ***owen
# print(s1.lstrip('*'))  # owen***

2 、大小写相关操作


  lower——改成小写
  upper——改成大写
用法:
 # l1 = 'OweN123OH'
 # print(l1.lower())  # 将所有的英文字母改成小写 owen123oh
 # print(l1.upper())  # 将所有的英文字母改成大写OWEN123OH
 # print(l1.islower())  # 判断字符串中所有英文字母是不是都小写    结果显示为false-布尔值
 # print(l1.isupper())  # 判断字符中所有的英文字母是不是都大写    结果显示为false——布尔值

课时补充:图片验证码,之前都必须一模一样,现在却不用

# code = 'OwEn2'  # 定义一个验证码
# print('图片验证码:%s' % code)  # 提示用户验证码
# user_code = input('请输入验证码>>>:').strip()  # 给获取到的变量定义一个变量名,并去除首尾空格字符
# if code.lower() == user_code.lower(): 
#     print('验证码正确')

3 、判断字符的开头或者结尾是否是指定的字符

  startswith——开头处
  endswith——结尾处
用法:
 l1 = 'lili owen jery kevin 123'
 print(l1.startswith('l'))  # 判断'l'在不在字符串中的开头
 print(l1.startswith('lili'))  # 判断'lili'在不在字符串的开头
 print(l1.startswith('owen'))  # 判断'owen'在不在字符串的开头
 print(l1.endswith('3'))  # 判断'3'在不在字符串的结尾
 print(l1.endswith('123'))  # 判断'123'在不在字符串的末尾
 print(l1.endswith('jery'))  # 判断'jery'在不在字符串的末尾

4 、格式化输出

方式1:占位符:%s  %d
方式2:
  format方法有四种使用方法
 方法1:和占位符一样,使用{}占位
      print('my name is {} my age is {}'.format('owen', 20))
  方法2:根据索引取值,可以反复的使用 ,并且可以改变取值的内容
      print('my name is {0} {1}  my age is {1} {0}'.format('owen',20))
  方法3:根据指名道姓的方式取值
     print('my name is {name} my age is {age}'.format(name='owen', age=30))
  方法4、直接使用已经出现过的变量
name = 'owen'
age = 20
print(f'my name is {name} my age is {age}{age}')

5 、拼接字符串

join——拼接
l1 = '锄禾日当午 上班好幸苦'
l2 = '为了盘中餐 汗水都流干'
print('|'.join(l2))  # 为|了|盘|中|餐| |汗|水|都|流|干
#####
print('|'.join(['owen','wuhua','tony']))  # owen|wuhua|tony
print('|'.join(['owen','wuhua','tony', 22]))  # 报错
# join的元素都必须是字符串才可以,否则就会报错

6 、替换字符串中指定的字符

replace——替换字符
用法:
l1 = 'owen is big big big big handsome boy owen'
print(l1.replace('owen' ,'tony'))  # 将Owen替换成tony
默认一次性替换完
也可以指定替换的个数
l1 = 'owen is big big big big handsome boy owen'
print(l1.replace('owen' ,'tony',1))  # 指定替换其中一个,从左往右

7 、判断字符串中是否为纯数字

isdigit——是否数字
用法:
l1 = 'owen111'
l2 = '123'
print(l1.isdigit())  # false
print(l2.isdigit())  # true
# 判断用户输入的字符串是否为纯数字
score = input('score>>>:').strip()  # 获取用户输入,并移除首尾空格
if score.isdigit():  # 如果字符串为纯数字
    score = int(score)  # 字符串为整数
    print('还不错哦')  # 打印还不错哦
else:  # 否则
    print('再不好好写,给你一皮锤')

了解操作

1 、查找指定字符对应的索引值

find、index(找不到值时直接报错,不推荐使用)
用法:
  l1 = 'owen mark zhuli xiaohua'
  print(l1.find('o'))  # 结果为0,从左往右开始查找,找到第一个o就停止
  print(l1.find('n',0,2))  # 结果为-1(意思就是找不到)
  print(l1.index('m', 1, 4))  # 找不到直接报错 不推荐使用

2 、文本位置改变

center——文本居中
ljust——文本左对齐
rjust——文本右对齐
zfill——文本前面自动填充零,文本右对齐
name = 'owen'
print(name.center(20,'*'))  # 结果为********owen********
print(name.ljust(20,'*'))  # 结果为 owen****************
print(name.rjust(20,'*'))  # 结果为****************owen
print(name.zfill(10))  # 结果为000000owen

3 、特殊符号:斜杠与一些英文字母的组合会产生特殊的 含义

 \n ——行分隔符、\t——元素分隔.....
  print('ow\nen')  |   print('ow\ten')
# 如果想取消它们的特殊含义,,可以在字符串前面加r
print('ow\nen') print('ow\ten')
ow (第一行) ow en
en (第二行)

4 、captalize , swapcase , title

captalize——首字母大写
message = 'nice to meet you!' print(message.capitalize())  # Nice to meet you!
 
 swapcase——大小写翻转
message = 'Have a good time'
print(message.swapcase())  # hAVE A GOOD TIME

 title——让每个单词的首字母大写
 message = 'Have a good time'
 print(message.title())  # Have A Good Time

列表内置方法

1 、类型转换

list可以转换支持for循环的数据类型
  可以被for循环的数据类型:字符串 列表 字典 元组 集合
 print(list(123))  # 报错
 print(list(13.14))  # 报错
 print(list('owen'))  # ['o', 'w', 'e', 'n']
 print(list({'name': 'owen', 'age': 20}))  # ['name', 'age']
 print(list((11,22,33,44,55)))  # [11, 22, 33, 44, 55]
 print(list({0,9,8,7}))  # [0, 9, 8, 7]
 print(list(True))  # 报错

2 、常见操作

  name_list = ['owen','kary','sendy','dancy']
 1、 索引取值
   print(name_list[0])  # 结果为'owen'
    
 2、 切片操作
   print(name_list[-3:-1])  # 结果为['kary', 'sendy']
    
 3、 间隔
   print(name_list[0:4:1])  # ['owen', 'kary', 'sendy', 'dancy']
   print(name_list[0:4:3])  # ['owen', 'dancy']

 4、 统计列表中元素的个数(len)
   print(len(name_list))  # 结果为4

 5、成员运算,最小判断单位是元素不是元素里的单个字符
   print('o' in name_list)  #  结果为False
   print('owen' in name_list)  # 结果为True
    
  6、列表增加元素的方法
     6.1、尾部追加'单个'元素(使用append)
      name_list.append('小王')
      print(name_list)      
  # 结果为 ['owen', 'kary', 'sendy', 'dancy', '小王']

     6.2、指定位置插入'单个'元素(使用insert)
      name_list.insert(0, '呜呼')
      print(name_list)  
# 结果为 ['呜呼', 'owen', 'kary', 'sendy', 'dancy']

     6.3、合并列表(使用extend)
       name_list.extend([123,456,789])
       print(name_list)
# 结果为['owen', 'kary', 'sendy', 'dancy', 123, 456, 789]
""" extend可以看成是for循环+append """

  7、删除元素
    7.1 通用的删除方式(del)
     del name_list[0]
     print(name_list)  # 结果为['kary', 'sendy', 'dancy']
    
    7.2 就地删除(remove)  # 点名要直接删除某个元素
     name_list.remove('kary')
     print(name_list)  # 结果为['owen', 'sendy', 'dancy']
     7.3 延迟删除(pop)
        print(name_list.pop())  # 结果为dancy,默认是尾部弹出
        print(name_list.pop(2))  # 结果为sendy,可以指定索引值
    
    8、修改列表元素(id)
    print(id(name_list[1]))  # 结果为2488639686192
    name_list[1] = 'owen123'
    print(id(name_list[1]))  # 结果为2488639686192
    # 修改列表元素的地址还是一样的
    
    9、排序(sort)
     l1 = [66,77,44,99,55,88]
     l1.sort()
     print(l1)  # 结果显示为[44, 55, 66, 77, 88, 99]        默认为升序  
     l1.sort(reverse=True)  # 修改为降序
     print(l1)  # [99, 88, 77, 66, 55, 44]
        
    10、翻转(reverse)
     l1 = [66,77,44,99,55,88]
     l1.reverse()  # 使列表元素前后翻转
     print(l1)  # 结果为[88, 55, 99, 44, 77, 66]
     
     11、比较运算
      l1 = [11, 22, 33]
      l2 = [1, 2, 3, 4, 5, 6, 7, 8]
      print(l1 > l2)  # 结果为True
    '''列表之间作比较,其实比的就饿死对应索引位置上的元           素'''
     12、统计列表中某个元素出现的次数(count)
       l1 = [11,33,44,77,88,5,88,99,22,11]
       print(l1.count(11))  # 统计元素11出现的次数  结果为2
        

可变类型与不可变类型

'''
   可变类型与不可变类型
    可变类型——列表
   值改变 内存地址不变 修改的是本身
    不可变类型——字符串
  值改变 内存地址肯定变因为 修改过程产生了新的值
     '''
l1 = '***owen***'
print(l1.strip('*'))  # 结果为 owen
print(l1)  # 结果为***owen***
''' 变量没有发生改变,只是产生一个新结果 '''
l2 = [1, 2, 3]
l2.extend([11, 22, 33, 44, 55])  # 结果为None
print(l2)  # 结果为[1, 2, 3, 11, 22, 33, 44, 55]

队列与堆栈

队列:
    先进先出 ,就像先排队的先买到饭先走
 new_list = []
 # 先进
 new_list.append(1)
 new_list.append(2)
 new_list.append(3)
 # 先出
 for i in new_list:
     print(i)
 print(new_list.pop(0))
 print(new_list.pop(0))
 print(new_list.pop(0))
堆栈:
   越先来的,越晚走
  new_list = []
 # 先进
 new_list.append(111)
 new_list.append(222)
 new_list.append(333)
 # 后出
 print(new_list.pop())
 print(new_list.pop())
 print(new_list.pop())

今日总结完毕~

posted @ 2022-03-09 20:35  未月  阅读(71)  评论(0)    收藏  举报