python字符串和常用数据结构

一、字符串:
(1)字符串:就是由零个或多个字符组成的有限序列
(2)常用代码:

通过len函数计算字符串的长度
str1 = 'hello, world!'
print(len(str1))
运行结果:13
获得字符串首字母大写的拷贝
print(str1.capitalize())
运行结果:Hello, world!
从字符串中查找子串所在位置
print(str1.find('or')) 
运行结果:8
print(str1.find('shit'))
运行结果:-1
与find类似但找不到子串时会引发异常
print(str1.index('or'))
运行结果:8
print(str1.index('shit'))
运行结果:Traceback (most recent call last):
  File "d:/python3/day04.py", line 7, in <module>
    print(str1.index('shit'))
ValueError: substring not found
检查字符串是否以指定的字符串开头
print(str1.startswith('He')) 
运行结果:False
检查字符串是否以指定的字符串结尾
print(str1.endswith('!'))
运行结果:True
将字符串以指定的宽度居中并在两侧填充指定的字符
print(str1.center(50, '*'))
运行结果:******************hello, world!*******************
将字符串以指定的宽度靠右放置左侧填充指定的字符
print(str1.rjust(50, ' '))
运行结果:                            hello, world!
从字符串中取出指定位置的字符(下标运算)
str2 = 'abc123456'
print(str2[2])
运行结果:c
字符串切片(从指定的开始索引到指定的结束索引)
print(str2[2:5]) 
print(str2[2:])  
print(str2[::2])  
print(str2[::-1]) 
print(str2[-3:-1])
运行结果:
c12
c123456
c246
ac246
654321cba
45
检查字符串是否由数字构成
print(str2.isdigit())
运行结果:False
检查字符串是否以字母构成
print(str2.isalpha())
运行结果:False
检查字符串是否以数字和字母构成
print(str2.isalnum())
运行结果:True
获得字符串修剪左右两侧空格的拷贝
str3 = '  jackfrued@126.com '
print(str3.strip())
print(str3.lstrip())
print(str3.rstrip())
运行结果:
jackfrued@126.com
jackfrued@126.com
  jackfrued@126.com

python常用的数据结构:列表、元组、集合和字典
列表:[ ]、也可以进行切片操作,可以修改元素
定义列表: list1 = [1, 3, 5, 7,100]
列表的乘法:

list2 = ['hello'] * 5
print(list2)
运行结果:['hello', 'hello', 'hello', 'hello', 'hello']

下标(索引)运算:

print(len(list2))
运行结果:5

添加元素:

list2.append(200)
print(list2)
运行结果:['hello', 'hello', 'hello', 'hello', 'hello', 200]

删除元素:

list2.remove(200)
print(list2)
运行结果:['hello', 'hello', 'hello', 'hello', 'hello']

注:
1、sorted函数返回列表排序后的拷贝不会修改传入的列表
2、通过key关键字参数指定根据字符串长度进行排序而不是默认的字母表顺序
3、sort给列表对象发出排序消息直接在列表对象上进行排序
4、 用列表的生成表达式语法创建列表容器
f = [x + y for x in 'ABCDE' if x == 'A' for y in '1234567'] print(f)
5、通过生成器可以获取到数据但它不占用额外的空间存储数据, 每次需要数据的时候就通过内部的运算得到数据(需要花费额外的时间)

f = (x ** 2 for x in range(1, 1000))
    print(sys.getsizeof(f))  # 相比生成式生成器不占用存储数据的空间
    print(f)
    for val in f:
        print(val)

6、Python中还有另外一种定义生成器的方式,就是通过yield关键字将一个普通函数改造成生成器函数

def fib(n):
    a, b = 0, 1
    for _ in range(n):
        a, b = b, a + b
        yield a

元组:( )、元组的元素不能修改
定义元组:
t = ('wjl',22,True,'内蒙古') print(t) 运行结果:('wjl', 22, True, '内蒙古')
获取元组中的元素:
print(t[0]) 运行结果:wjl
遍历元组中的值:

for member in t:
        print(member)
运行结果:
wjl
22
True
内蒙古

将元组转换成列表

person = list(t)
print(person)
运行结果:['wjl', 22, True, '内蒙古']

将列表转换成元组

fruits_list = ['apple', 'banana', 'orange']
fruits_tuple = tuple(fruits_list)
print(fruits_tuple)
运行结果:('apple', 'banana', 'orange')

注:
1、如果不需要对元素进行添加、删除、修改的时候,可以考虑使用元组,当然如果一个方法要返回多个值,使用元组也是不错的选择
2、元组在创建时间和占用的空间上面都优于列表。我们可以使用 sys 模块的 getsizeof 函数来检查存储同样的元素的元组和列表各自占用了多少内存空间

集合:{ }、不允许有重复元素,而且可以进行交集、并集、差集等运算、remove的元素如果不存在会引发KeyError、
创建集合:

set2 = set(range(1, 10))
print(set2)
运行结果:{1, 2, 3, 4, 5, 6, 7, 8, 9}

遍历元素并进行运算:

for elem in set2:
    print(elem ** 2, end=' ')
    print()
运行结果:
1
4
9
16
25
36
49
64
81

将元组转换成集合:

set3 = set((1, 2, 3, 3, 2, 1))
print(set3)
运行结果:{2, 3}

集合的交集、并集、差集、对称差运算

print(set1 & set2)
    # print(set1.intersection(set2))
    print(set1 | set2)
    # print(set1.union(set2))
    print(set1 - set2)
    # print(set1.difference(set2))
    print(set1 ^ set2)
    # print(set1.symmetric_difference(set2))

# 判断子集和超集
    print(set2 <= set1)
    # print(set2.issubset(set1))
    print(set3 <= set1)
    # print(set3.issubset(set1))
    print(set1 >= set2)
    # print(set1.issuperset(set2))
    print(set1 >= set3)
    # print(set1.issuperset(set3))

字典:{ }、可以存储任意类型对象,与列表、集合不同的是,字典的每个元素都是由一个键和一个值组成的“键值对”,键和值通过冒号分开。
注:
1、字典的一切操作都是通过键名操作键值!!!
2、字典是无序的,没有索引操作,除非转换成有序字典
创建字典并且通过键获取对应的值:

scores = {'小黄鸭': 88, '哆啦A梦': 66, '大白': 23}
print(scores['哆啦A梦'])
运行结果:66

对字典进行遍历(遍历的其实是键再通过键取对应的值)

for elem in scores:
    print('%s\t--->\t%d' % (elem, scores[elem]))
运行结果:
小黄鸭  --->    88
哆啦A梦 --->    66
大白    --->    23

更新字典中的元素

scores['大白'] = 99
print(scores)
运行结果:{'小黄鸭': 88, '哆啦A梦': 66, '大白': 99}

get方法也是通过键获取对应的值但是可以设置默认值

print(scores.get('小黄鸭', 88))
运行结果:88

删除字典中的元素

print(scores.popitem())
运行结果:('大白', 99)
# 同时获取键值对
# for key,value in dict_.items():
#     print(key,value)
# 获取键名
print(dict_.keys())
# 获取键值
print(dict_.values())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值