逆袭之路——python学习笔记【day07】

今日内容概要

  • 字符串的内置方法
  • 列表内置方法
  • 可变类型与不可变类型
  • 队列与堆栈请添加图片描述

今日内容详细

一、字符串的内置方法

  1. 移除字符串首尾的指定字符 可以选择方向 .strip()
s1 = '$$$jason$$$'
print(s1.strip('$'))  # jason
print(s1.lstrip('$'))  # jason$$$       left    左边
print(s1.rstrip('$'))  # $$$jason       right   右边
  1. 大小写相关操作 .lower()upper()islower()isupper()
s2 = 'JaSoN666Sb'
print(s2.lower())  # 将所有的英文字母变为小写 jason666sb
print(s2.upper())  # 将所有的英文字母变为大写 JASON666SB
print(s2.islower())  # 判断字符串中所有的英文字母是否是纯小写  结果是布尔值
print(s2.isupper())  # 判断字符串中所有的英文字母是否是纯大写  结果是布尔值

还有一些图片的验证码,在以前是需要一模一样的,大小写不能忽略 现在的验证码却可以,这是如何实现的

code = 'JaSOn6'
print('这是返回给用户的图片验证码:%s' % code)
user_code = input('请输入验证码>>>:').strip()
# 验证码忽略大小写 只需要统一转大写或者小写就能进行判断了
if code.lower() == user_code.lower(): 
    print('验证码正确')
  1. 判断字符串的开头或者结尾是否是指定的字符 .startswith()
s3 = 'jason kevin jason tony 666'

# 判断开头用的是 startwish
print(s3.startswith('j'))  # True
print(s3.startswith('jason'))  # True
print(s3.startswith('tony'))  # False

# 判断结尾用的是 endswist
print(s3.endswith('6'))  # True
print(s3.endswith('666'))  # True
print(s3.endswith('jason'))  # False

# 以上的打印结果都为bool值 True或False
  1. 格式化输出

        方式1 占位符:%s %d

        方式2 format方法>>>:四种玩法

                玩法1:跟占位符一致 使用的{}占位

print('my name is {} my age is {}'.format('jason', 18))

                玩法2:根据索引取值 可以反复使用

print('my name is {0} {0} {0} my age is {0} {1}'.format('jason', 18))

                玩法3:根据指名道姓的方式取值

print('my name is {name} {name} my age is {age} {pwd}'.format(name='jason', age=18, pwd=123))

                玩法4:直接使用已经出现过的变量,在打印内容的前面一个 f

name = 'jason'
age = 18
print(f'my name is {name} my age is {age} {name} {age}')

"""python官网很久以前就说推荐使用format做格式化输出 甚至说%s要被砍掉"""
  1. .拼接字符串 .join()
s1 = '三月不努力 四月变垃圾'
s2 = '年少不努力 妄为少年人'
print(s1 + s2)  # 如果字符串很大 加号效率较低
print(s1 * 10)  # 重复次数
print('|'.join(s1))  # 三|月|不|努|力| |四|月|变|垃|圾
print('$'.join(['jason', 'kevin', 'justin', 'tony']))  # jason$kevin$justin$tony

'''join方法相当于是将括号内的元素进行for循环'''

l1 = [11, 'jason', 'kevin']
print('|'.join(l1))  # join的元素必须都是字符串才可以 否则报错
  1. 替换字符串中指定的字符 .replace()
s6 = 'jason is DSB DSB DSB DSB jason jason jason'
将jason替换成老刘
print(s6.replace('jason', '老刘'))  # 默认一次性替换所有
指定替换的个数
print(s6.replace('jason', '老刘', 2))  # 还可以通过数字控制替换的个数 从左往右
'''很多文本编辑器里面的替换功能 就可以使用replace完成'''
  1. 判断字符串中是否是纯数字 .isdigit()
s7 = 'jason123'
print(s7.isdigit())  # False
print('123'.isdigit())  # True
print('123.21'.isdigit())  # False
score = input('score>>>:')
if score.isdigit():
    score = int(score)
else:
    print('你能不能好好写')
  1. 要了解的操作
# 1.查找指定字符对应的索引值
s1 = 'jason justin kevin tony'
print(s1.find('s'))  # 从左往右查找 查找一个就结束
print(s1.find('k', 1, 9))  # -1 意思是没有 找不到
print(s1.index('s'))
print(s1.index('k', 1, 9))  # 找不到直接报错 不推荐使用

# 2.文本位置改变
name = 'tony'
print(name.center(30, '-'))  # -------------tony-------------
print(name.ljust(30, '*'))  # tony**************************
print(name.rjust(30, '$'))  # $$$$$$$$$$$$$$$$$$$$$$$$$$tony
print(name.zfill(50))  # zero 零  0000000000000000000000000000000000000000000000tony

# 3.特殊符号:斜杠与一些英文字母的组合会产生特殊的含义
print('ja\tson\nke\avin')
'''如果想取消它们的特殊含义 可以在字符串的前面加一个字母r'''
print(r'ja\tson\nke\avin')

# 4.captalize,swapcase,title
# 4.1 .captalize():首字母大写
message = 'hello everyone nice to meet you!'
message.capitalize()
Hello everyone nice to meet you!
# 4.2 .swapcase():大小写翻转
message1 = 'Hi girl, I want make friends with you!'
message1.swapcase()
hI GIRL, i WANT MAKE FRIENDS WITH YOU!
#4.3 .title():每个单词的首字母大写
msg = 'dear my friend i miss you very much'
msg.title()
Dear My Friend I Miss You Very Much

二、列表内置方法

# 但凡能被for循环遍历的数据类型都可以传给list()转换成列表类型,list()会跟for循环一样遍历出数据类型中包含的每一个元素然后放到列表中
>>> list('wdad') # 结果:['w', 'd', 'a', 'd'] 
>>> list([1,2,3]) # 结果:[1, 2, 3]
>>> list({"name":"jason","age":18}) #结果:['name', 'age']
>>> list((1,2,3)) # 结果:[1, 2, 3] 
>>> list({1,2,3,4}) # 结果:[1, 2, 3, 4]

它的一些使用操作如下:

name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry']
  1. 索引取值
print(name_list[0])
print(name_list[-1])
  1. 切片操作
print(name_list[1:4])  # ['kevin', 'tony', 'tom']
print(name_list[-4:-1])  # ['kevin', 'tony', 'tom']
print(name_list[-1:-4:-1])  # ['jerry', 'tom', 'tony']
  1. 间隔
print(name_list[0:4:1])  # ['jason', 'kevin', 'tony', 'tom']
print(name_list[0:4:2])  # ['jason', 'tony']
print(name_list[-1:-4:-1])  # ['jerry', 'tom', 'tony']
  1. 统计列表中元素的个数 len()
print(len(name_list))  # 5
  1. 成员运算 最小判断单位是元素不是元素里面的单个字符
print('j' in name_list)  # False
print('jason' in name_list)  # True
  1. 列表添加元素的方式

1)尾部追加’单个’元素,不管添加字符串还是列表都相当于添加一个元素 .append()

name_list.append('小李')
print(name_list)
name_list.append([11, 22, 33, 44])
print(name_list)

2)指定位置插入’单个’元素 .insert()

name_list.insert(0, 123) # 0表示按索引位置插值 123表示所插入的内容
name_list.insert(2, '可不可以插个队')
name_list.insert(1, [11, 22, 33])
print(name_list)

3)合并列表 .extend()

'''所添加的列表自动添加到末尾'''
name_list.extend([11, 22, 33, 44, 55])
print(name_list)

'''extend其实可以看成是for循环+append'''
for i in [11, 22, 33, 44, 55]:
    name_list.append(i)
print(name_list)
name_list += [11, 22, 33, 44, 55]
print(name_list)  # 加号的效率不高
  1. 删除元素 del

1)通用的删除方式

del name_list[0] # 删除列表中索引为0的元素
print(name_list)

2)就地删除 .remove() 括号内指名道姓表示要删除哪个元素,没有返回值

print(name_list.remove('jerry'))  # None 就是为空,没有将值进行返回
print(name_list)

3)延迟删除 .pop() 默认删除列表最后一个元素,并将删除的值返回,括号内可以通过加索引值来指定删除元素

print(name_list.pop())  # 默认是尾部弹出   返回删除值 jerry
print(name_list)
print(name_list.pop(2))  # 还可以指定索引值  返回删除值 tony
print(name_list)
  1. 修改列表元素,根据索引值进行修改
print(id(name_list[0]))  # 2614038082368
name_list[0] = 'jasonDSB'
print(id(name_list[0]))  # 2614038926320
print(name_list)         # ['jasonDSB', 'kevin', 'tony', 'tom', 'jerry']
  1. 排序 .sort()
ss = [44, 77, 99, 11, 22, 33, 88, 66]
ss.sort()  # 默认是升序
print(ss)  # [11, 22, 33, 44, 66, 77, 88, 99]
ss.sort(reverse=True)  # 可以修改尾部开始降序(也就是进行前后颠倒)
print(ss)  # [99, 88, 77, 66, 44, 33, 22, 11]
  1. 翻转(进行前后颠倒)
ss = [44, 77, 99, 11, 22, 33, 88, 66]
ss.reverse()  # 前后颠倒
print(ss)
  1. 比较运算
s1 = [11, 22, 33]
s2 = [1, 2, 3, 4, 5, 6, 7, 8]
print(s1 > s2)  # True
"""列表在做比较的时候 其实比的是对应索引位置上的元素"""
  1. 统计列表中某个元素出现的次数 .count()
l1 = [11, 22, 33, 44, 33, 22, 11, 22, 11, 22, 33, 22, 33, 44, 55, 44, 33]
print(l1.count(11))  # 统计元素11出现的次数
  1. .clear() 清空列表
l1 = [11, 22, 33, 44, 33, 22, 11, 22, 11, 22, 33, 22, 33, 44, 55, 44, 33]
l1.clear()  # 清空列表
print(l1)

在这里插入图片描述

三、可变数据类型与不可变数据类型

  • 可变数据类型:就是变量引用的数据类型,在改变数值的时候,内存地址不变化的情况下,它修改的是本身自己,此数据类型为可变数据类型(例如列表)。

  • 不可变数据类型:就是变量引用的数据类型,在改变数值的时候,内存地址改变的情况下,变化之后产生了新的值,此数据类型为不可变数据类型(例如字符串)。

  • 如何查看变量的’内存地址’

# 可以通过打印它的id来进行查看
s2 = [1, 2, 3]
print(id(s2))  # 2171184953160
s2.append(11111111)
print(id(s2))  # 2171184953160

四、 队列与堆栈

  • 队列:队列是一种先进先出的数据类型,它的跟踪原理类似于在超市收银处排队,队列里的的第一个人首先接受服务。
    新的元素通过入队的方式添加到队列的末尾,而出队就是将队列的头元素删除。
  • 堆栈:堆栈是一个后进先出的数据结构,就好比我们叠衣服,先放进去后拿出来,后放进去的先拿出来一样。
# 队列
new_list = []
# 先进
new_list.append(111)
new_list.append(222)
new_list.append(333)
# 先出
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())

请添加图片描述
请添加图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

絵飛·的魚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值