小白从0开始的python学习日志(七)

字符串其他内置方法、列表内置方法、队列及堆线

I. 字符串内置方法

  1. 字符串常见操作
    # 1.移除字符串首尾的空格 可选择方向
    s1 = '$$$Bob$$$'
    print(s1.strip('$')) # Bob
    print(s1.lstrip('$')) # Bob$$$
    print(s1.rstrip('$')) # $$$Bob
    
    # 2. 大小写相关操作
    s2 = 'Bob666Sb'
    print(s2.lower()) # bob666sb
    print(s2.upper()) # BOB666SB
    print(s2.islower()) # 判断字符串中所有的英文字母是否为纯小写,结果是布尔值
    print(s2.isupper()) # 判断字符串中所有的英文字母是否为纯大写,结果是布尔值
    '用以输入图片验证码'例如:
    code = 'Bob666'
    print('这是返回给用户的图片验证码:%s'% code)
    user_code = input('请输入验证码').strip()
    if code.lower() == user_code.lower():
        print('验证码正确')
        
    # 3.判断字符串的开头和结尾是否为指定字符
    s3 = 'Bob, Tommy, Poeme'
    print(s3.startwith('B')) # True
    print(s3.startwith('Bob')) # True
    print(s3.endwith('e')) # True
    print(s3.endwith('poeme')) # True
    
    # 4.格式化输出
    # 方式1 占位符:%s %d
    # 方式2 format方法(4种玩法)
    (1) 跟占位符一致
    print('my name is {} my age is {}'.format('Bob', 30))
    (2) 根据索引取值占位
    print('my name is {0} my age is {1}'.format('Poeme', 18)) # 同一数据可多次使用
    (3) 根据变量名/关键字取值
    print('my name is {name} my age is {age}'.format(name = 'Poeme', age = 18)) # 同一数据可多次使用
    (4) 先定义变量名,并使用出现过的变量
    name = 'Poeme'
    age = 18
    print(f'my name is {name} my age is {age}')
    '''python官网很久以前就推荐使用format'''
    
    # 5.拼接字符串
    s1 = '三十不努力, '
    s2 = '活该被放弃'
    print(s1 + s2) # 如果字符串很大,加号效率较低
    print(s1 * 10) # 重复10次
    print('|'.join(s1)) # 三|十|不|努|力|,|
    print('$'.join(['Bob', 'Poeme'])) # Bob$Poeme
    '''相当于将括号内的元素进行for循环并嵌入内容,内容需要都是字符串,否则报错'''
    
    # 6. 替换字符串中指定的字符(全局替换)
    s6 = 'Bob is DSB DSB DSB DSB Bob Bob Bob'
    # 将所有Bob替换为Poeme
    print(s6.replace('Bob', 'Poeme'))
    # 指定替换的个数:2个,从左往右
    print(s6.replace('Bob', 'Poeme', 2))
    '''很多文本中的替换功能可通过此操作使用'''
    
    # 7.判断字符串中是否为纯数字
    s7 = 'Bob801'
    print(s7.isdight()) # False
    # 如使用成绩录入时
    score = input('score>>>:')
    if score.isdight():
        score = int(score)
    else:
        print('录入错误')
    
  2. 字符串了解操作
    # 1. 查找指定字符对应的索引值
    s1 = 'Bob Poeme Tommy'
    print(s1.find('o')) # 从左往右,找到1个就结束
    print(s1.find('s', 1, 9)) # 1、9可限定范围。-1的意思是找不到
    
    # 2.文本位置改变
    name = 'Bob'
    print(name.center(30, '-') )#总宽度30,字符串居中,不够用-填充
    print(name.ljust(30, '*') )#总宽度30,字符串左对齐,不够用*填充
    print(name.rjust(30, '*') )#总宽度30,字符串右对齐,不够用*填充
    print(name.zfill(50)) #总宽度50,字符串右对齐,不够用0填充
    
    # 3.特殊符号
    print('Bob\nPoeme')# \n是换行,\t是制表符,\a是特殊符号
    # 如果想取消特殊含义,可在字符串前加r
    print(r'Bob\nPoeme')
    
    # 4. 大小写相关
    message = 'hellow everyone'
    print(message.capitalize()) # 首字母大写
    print(message.swapcace()) # 大小写反转
    print(message.title()) # 每个单词首字母大写
    

II. 列表的内置方法

  1. 列表类型转换
    # 用for循环取值后添加
    print(list(11)) # 整型不行
    print(list(11.11)) # 浮点型不行
    print(list('Bob')) # 字符串输出为['B', 'o', 'b']
    print(list({'name':'Bob', 'pwd':123})) # 字典只拿到了key,['name', 'pwd']
    print(list(11, 22, 33, 44, 55)) # 元组输出为[11, 22, 33, 44, 55]
    print(list({11, 22, 33, 44, 55})) # 集合输出为[11, 22, 33, 44, 55]
    print(list(True)) # 布尔值不行
    'list可以转换支持for循环的数据类型:字符串、列表、字典、元组、集合'
    
  2. 常见操作及可变、不可变类型
    name_list = ['Bob', 'Poeme', 'Tommy', 'Jerry']
    # 1.索引取值
    print(name_list[0])
    print(name_list[-1])
    
    # 2.切片操作
    print(name_list[1:4]) # ['Poeme', 'Tommy', 'Jerry']
    print(name_list[-1:-4:-1])# ['Jerry', 'Tommy', 'Poeme']
    print(name_list[-1:-4])# ['Poeme', 'Tommy', 'Jerry']
    
    # 3.间隔
    print(name_list[0:4:2] # ['Bob', 'Tommy']
          
    # 4.统计列表中元素的个数
    print(len(name_list)) # 输出为4
    
    # 5.成员运算(最小单位为元素,非元素内字符)
    print('P' in name_list) #将会报错,应该以'Poeme'检索
          
    # 6.列表添加元素的方式
    6.1 尾部追加'单个'元素
    name_list.append('Jam')
    print(name_list) # ['Bob', 'Poeme', 'Tommy', 'Jerry', 'Jam']
    name_list.append([1, 2])
    print(name_list) # ['Bob', 'Poeme', 'Tommy', 'Jerry', [1, 2]]
     6.2 指定位置插入'单个'元素
    name_list.insert(0, 123)
    print(name_list) # [123,'Bob', 'Poeme', 'Tommy', 'Jerry']
    6.3 合并列表
    name_list.extend([1, 2, 3])
    或name_list += [1, 2, 3]
    print(name_list) # ['Bob', 'Poeme', 'Tommy', 'Jerry', 1, 2, 3]
    '可看作for循环+append'
    '''字符串调用内置方法时产生了一个新的结果,而本身并没有变,但列表调用后本身直接改变'''
          
    7.可变类型与不可变类型
    '可变类型(列表):值改变,内存地址不变,修改的是本身'
    '不可变类型(字符串):值改变,内存地址改变,产生了一个新的值'
    7.1 如何查看变量的内存地址
    S1 = [1, 2, 3]
    print(id(S1))
    S1.append(4)
    print(id(S1))
    # 二者地址是相同的
    
    8. 删除元素
    8.1 通用方法
    del name_list[0]
    print(name_list) # ['Poeme', 'Tommy', 'Jerry']
    8.2 直接删除某个元素
    name_list.remove('Tommy')
    print(name_list) # ['Bob', 'Poeme', 'Jerry']
    8.3 延迟删除
    name_list.pop()
    print(name_list) # ['Bob', 'Poeme', 'Tommy'],默认尾部弹出元素,也可以指定索引0123
          
    9. 修改列表
    name_list(2) = 'Tom'
    print(name_list) # ['Bob', 'Poeme', 'Tom', 'Jerry']
    
  3. 列表的其他操作
    # 1. 排序
    s1 = [1, 3, 2, 5, 4]
    s1.sort()
    print(s1)
    # 默认升序[1, 2, 3, 4, 5]
    s1.sort(reverse = True)
    print(s1)
    # 修改降序[5, 4, 3, 2, 1]
    
    # 2. 反转
    s1 = [1, 3, 2, 5, 4]
    s1.reverse()
    print(s1)
    # 前后颠倒[4, 5, 2, 3, 1]
    
    # 3. 比较运算
    s1 = [11, 22, 33]
    s2 = [1, 2, 3, 4, 5]
    print(s1 > s2)
    # True
    '列表在做比较的时候是对比对应索引位置上的元素'
    s1 = ['A', 'B', 'C']
    s2 = ['a']
    print(s1 > s2)
    # False
    '字母在比较时有对应的数字,如A---65;a---97'
    
    # 4. 获取索引值
    s1 = [11, 22, 33]
    print(s1.index(22))
    # 输出为1
    
    # 5. 统计列表中某个元素出现的次数
    L1 = [11, 22, 33, 44, 11, 22, 33, 11, 22, 11]
    print(L1.count(11))
    # 输出为4,为统计11出现的次数
    
    # 6. 复制copy和清空clear可自行使用摸索
    

III. 队列与堆栈

# 队列[先进先出:第一件放进去第一件拿出来]
new_list = []
new_list.append(111)
new_list.append(222)
new_list.append(333)
print(new_list)
'[111, 222, 333]'
for i in new_list:
    print(i)
或者
print(new_list.pop(0))# 111
print(new_list.pop(0))# 222
print(new_list.pop(0))# 333
'111  222  333'
# 堆栈[先进后出:第一件放进去最后拿出来]
new_list = []
new_list.append(111)
new_list.append(222)
new_list.append(333)
print(new_list)
'[111, 222, 333]'
print(new_list.pop())# 333
print(new_list.pop())# 222
print(new_list.pop())# 111
'333  222  111'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值