字符串,列表的内置方法

本章内容

  • 字符串的其他内置方法
  • 列表内置方法
  • 可变类型与不可变类型
  • 队列与堆栈

字符串的其他内置方法

1.移除字符串首尾的指定字符,可以选择方向 eg:
    s = '$$$$username$$$$'
    print(s.strip('$'))    # username
    print(s.lstrip('$'))   # username$$$$
    print(s.rstrip('$'))   # $$$$username
2.大小写相关的操作  eg:
    s = 'TonytonY'
    print(s.lower())       # tonytony
    print(s.upper())       # TONYTONY
    # 判断字符串内的所有英文是不是纯小写
    print(s.isupper())     # Flase
    # 判断字符串内的所有英文是不是纯小写
    print(s.isupper())     # Flase
    # 文字验证码的原理:
    real_tetx = 'Alex'
    text = input('输入您的验证码>>>:').strip()
    if real_text.isupper() == text.isupper:
        print('输入正确')
	# 其实就是统一转换为大写或者小写,然后进行校验
3.判断字符串的开头或者结尾是否有指定的字符 eg:
    s = 'jason tony 老刘'
    print(s.startswith('j'))      # True
    print(s.endswith('老刘'))     # True
    print(s.startswith('jason'))  # True
4.格式化输出的传统方式和四种玩法 eg:
    # 传统方式
    s = my name is %s my age is %d
    print(s % ('tony', 18))
    # 玩法一:
    s = 'my name is {} my age is {}'
    print(s.format('jsaon', 18))
    # 玩法二:
    s = 'my name is {0} {0} {0} my age is {1}'
    print(s.format('tony', 10))
    # 玩法三:
    s = 'my name is {name}{name} my age is {age}'
    print(s.format(name='tony', age=19))
    # 玩法四:
    name = 'tony'
    age = 99
    print(f'my name is {name} my age is {age}')
5.拼接字符串 eg:
    s1 = 'abcd'
    s2 = 'efgh'
    print(s1 + s2)         # abcdefgh
    print(s1 * 10)         # abcdabcdabcdabcdabcd
    print('|'.join(s1))    # a|b|c|d
    print("$".join(['ab', 'cd', 'ef', 'gh']))
    	# ab$cd$ef$gh
"""
join方法相当于把数据内的元素做了一次for循环,每次循环便加入拼接的字符
"""
    s = [22, 'tony', 'tom', 'jerry']
    print('$'.join(s))
image-20220309153449812
	# 如果拼接了不是字符串类型的数据,则会报错,如上图所示:
    # 所以join拼接的元素必须都是字符串
6.替换字符串中指定的字符  eg:
    # 默认替换一次性替换一个元素的所有相同元素
    s = 'tom tom kevin jerry marie lukas kevin'
    print(s.replace('tom', 'jerry'))
    s = 'tom tom kevin jerry marie lukas kevin'
    print(s.replace('tom', 'tony',1))
    # 替换顺序默认从左往右
7.判断字符串中是否是纯数字  eg:
    s = 'tony999'
    print(s.isdigit())      # Flase
    s = '123456'
    print(s.isdigit())      # True
    score = input('score>>>:')
    if score.isdigit():
        score = int(score)
        print(score)
    else:
        print('好好写')
image-20220309155305794
"""################必会操作####################"""
1.查找指定字符所对应的索引值
    s = 'my name is tony'
    print(s.find('n'))         # 打印3
    # 此处没有打印tony所在的n的索引,因为find查找是从左向右,找到一个就结束
    # 也可以定义查找的范围:
    print(s.find('a', 5, 8))    # # 打印-1,意思是没有找到
    print(s.index('a', 5, 8))    # 直接报错,平常不建议使用
    
2.文本位置的改变 eg:
    s = 'username'
    print(s.center(30,'-')) # -----------username-----------
    print(s.ljust(30, '-')) # username----------------------
    print(s.rjust(30, '-')) # ----------------------username
    print(s.zfill(40))  # 00000000000000000000000000000000username
3.特殊符号:斜杠与一些英文字母的组合会产生特殊的含义
	print('my name is tony\nmy age is 18')
image-20220309163523158
	print('my name \ais tony\nmy age\t is 18')
image-20220309163833181
	# 如果要取消效果,可以在前面加一个字母r eg:
image-20220309164043045
4.capitalize,swapcase,title的用法
4.1 capitalize: 首字母大写 eg:
    text = 'I am a STUDENT'
    print(text.capitalize()) # I am a student
4.2 swapcase 字母大小写反转 eg:
    print(text.swapcase()) # i AM A student
4.3 title: 全部首字母大写 eg:
    print(text.title())   # I Am A Student

列表内置方法

1.类型转换 eg:
    """列表内是整型和浮点型以及布尔值不可以转换,如下:"""
image-20220309165828045
1.1 字符串转换:
    print(list('my name')) # ['m', 'y', ' ', 'n', 'a', 'm', 'e']
1.2 字典的转换:
    print(list({'name':'tony','age':18})) # ['name', 'age']
1.3 元组的转换:
    print(list((1,2,3,4,5)))  # [1, 2, 3, 4, 5]
1.4 集合的转换:
    print(list({1,2,3,4,5,5,'tony'})) # [1, 2, 3, 4, 5, 'tony']
"""
由上述可以得出:只要可以进行for循环的数据类型都可以进行列表的转换
"""
2. 常见操作如下图:
image-20220309171750812
3. 间隔:
image-20220309172308838
4.统计列表中元素的个数:
    name_list = ['name', 'age', 'gender', 18]
	print(len(name_list))     # 4
5. 成员运算 
    """最小的判断条件是单个元素,而不是元素中的字符"""
    name_list = ['name', 'age', 'gender', 18]
    print('name' in name_list)   # True
    name_list = ['name', 'age', 'gender', 18]
    print('n' in name_list)      # False
6. 列表添加元素的方式
6.1 尾部追加'单个'元素:
    name_list = ['name', 'age', 'gender', 18]
    name_list.append('小王')
    print(name_list)     # ['name', 'age', 'gender', 18, '小王']
    name_list.append(['小王'])
    print(name_list)   # ['name', 'age', 'gender', 18, ['小王']]
6.2 指定位置添加'单个'元素:
    name_list.insert(3,'小王')
    print(name_list)  # ['name', 'age', 'gender', '小王', 18]
6.3 合并列表:
    age_list = [18, 15, 16]
    name_list.extend(age_list)   # 第一种
    name_list += age_list        # 第二种
    print(name_list) # ['name', 'age', 'gender', 18, 18, 15, 16]
    # 加号的效率不高
"""extend可以看成是for循环+append"""
	eg:
        for i in age_list:
            name_list.append(i)
        print(name_list)
7. 删除元素
7.1 通用的删除方式
    name_list = ['name', 'age', 'gender', 18]
    del name_list[0]
    print(name_list)    # ['age', 'gender', 18]
7.2 就地删除的方式
    name_list.remove('name')
    print(name_list) # ['age', 'gender', 18]
7.3 延迟删除
    name_list.pop()
    print(name_list)   # ['name', 'age', 'gender']
    # pop() 也可以指定索引值
    name_list.pop(2)
    print(name_list)   # ['name', 'age', 18]
8. 修改元素列表
    name_list[1] = 'male'
    print(name_list)   # ['name', 'male', 'gender', 18]
    # 修改改变的是索引为1的内存地址,并不是anme_list的内存地址  eg:
    print(id(name_list[1]))  # 2085094278120
    name_list[1] = 'male'
    print(id(name_list[1]))  # 2085095121448
9. 排序
    s = [11, 66, 33, 22, 55,88]
    s.sort()
    print(s)          # [11, 22, 33, 55, 66, 88]
    # 修改尾序
    s.sort(reverse=True)
    print(s)           # [88, 66, 55, 33, 22, 11]
10.反转
    s.reverse()
    print(s)           # [88, 55, 22, 33, 66, 11]
11.比较运算
    s = [11, 12, 34, 33]
    s2 = [2, 3, 4]
    print(s > s2)      # True 只比较第一个元素,如果是字符,则转换为字符所构成的数字进行比较,比较就是比较索引位置上的元素 eg:
    s1 = ['A', 'B', 'C']  # A>>>65
    s2 = ['a', 'b']       # a>>>97
    print(s1 > s2)       # False
12.统计列表中元素出现的个数
    l = ['jason','jason','jason','tony','tom','tom'] 
    print(l.count('jason'))      # 3
13. 清空列表
    l.clear()
    print(l)       # []

可变类型与不可变类型

"""
可变类型与不可变类型
    可变类型     列表
        值改变 内存地址不变 修改的是本身
    不可变类型   字符串
        值改变 内存地址肯定遍 修改过程产生了新的值
如何查看变量的'内存地址'
"""
# 话不多说,直接画解析图:
image-20220309185121396
# 如果改变的是列表中一个元素的值,那么这个列表本身的内存地址没有改变,改变的是索引对应的内存地址,所以列表是一个可变的数据类型

# 如果改变的是一个字符串的值,那么它会生成新的内存地址,原来的内存地址不变,所以字符串是不变的数据类型,如图:
image-20220309185852029
# 代码体现:
    s = '%%%tony%%%'
    print(s.strip('%'))   # s.strip(%)是新的值 tony
    print(s)     # %%%tony%%% 原来的内存地址不变

队列与堆栈

# 队列:先进先出 eg:超市排队结账 符合队列的特征
# 堆栈:先进后出 eg:叠衣服 符合堆栈的特征
#列表模拟队列与堆栈
	s = []
	s.append('tony')
	s.append('tom')
	s.append('jerry')
	for i in s:
    	print(i)
 # 打印结果:
	# tony
	# tom
	# jerry
# 堆栈
	s = []
	s.append('tony')
	s.append('tom')
	s.append('jerry')
	print(s.pop())
        print(s.pop())
	print(s.pop())	
# 打印结果为:
	# jerry
	# tom
	# tony
posted @   DDYT  阅读(53)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示