Python自学记录-第5周

Python自学记录目录

Python自学记录-第1周
Python自学记录-第2周
Python自学记录-第3周
Python自学记录-第4周



前言

本周学习python中的集合,以及字符串的部分属性。


一、集合

1.概念

集合是无序的不重复元素序列

2.性质

  • 可变类型序列
  • 没有value的字典
  • 无序的

3.使用说明

  • set()或{}创建
  • 空的集合必须用set()创建
  • 也具有增删改查功能
  • 可以判断子集、交集、并集、差集、超集和对称差集(全是数学概念,汗颜~)
    请添加图片描述

二、字符串的部分特性

1.驻留机制

含义即,多个相同的字符串,只占用一份空间,后续相同的都指向那份空间。相当于后续建立的内容就像是建立了一个“快捷方式”。

2.使用场景

由于pycharm工具对字符串做了优化,所以最好直接使用windows系统下的cmd命令后台,输入python,然后进入交互式命令行中,感受字符串的驻留机制。
驻留机制使用场景

3.驻留机制优点

简单描述就是提升程序运行速率,节省内存空间

优点

3.判断字符串操作的方法

主要是通过练习掌握几种函数的使用方法。
请添加图片描述

三、实例

1.创建集合

虽然两种方式都可以,但是使用set()创建更加直观一些
注意创建空集合只能用set()创建了

'''一,使用{}创建'''
s={2,3,4,5,6,7,7,8,8} # 元素不能重复
print(s)

'''二,使用set()函数创建'''
s1=set(range(6))
print(s1,type(s1))

s2=set([1,2,33,4,5,6,66,7,77])
print(s2,type(s2))

s3=set((1,2,3,4,5,6,7))
print(s3,type(s3))

s4=set('python') # 这里可以看出集合是无序的
print(s4,type(s4))

'''转为集合再用函数还是集合'''
s5=set({12,4,6,23,45,55,66})
print(s5,type(s5))

'''定义一个空集合'''
s6={} #dict字典类型
print(s6,type(s6))

s7=set()
print(type(s7))

结果

{2, 3, 4, 5, 6, 7, 8}
{0, 1, 2, 3, 4, 5} <class 'set'>
{1, 2, 33, 4, 5, 6, 66, 7, 77} <class 'set'>
{1, 2, 3, 4, 5, 6, 7} <class 'set'>
{'p', 't', 'o', 'n', 'h', 'y'} <class 'set'>
{66, 4, 55, 6, 23, 12, 45} <class 'set'>
{} <class 'dict'>
<class 'set'>

2.集合的增删改查

update()插入的元素可以更多,discard()删不存在的元素不会报错
pop()和remove()删不存在的元素都会报错

s={10,20,30,405,60}
'''集合元素的判断'''
print(10 in s)
print(100 not in s)

'''集合元素的新增'''
'''add()每次只能添加一个元素'''
s.add(80)
print(s)

s.update({200,300,400})
print(s)

'''update()至少添加一个元素'''
s.update([100,99,98])
s.update([77,66,55])
print()

'''删除,若元素没有则报错'''
s.remove(100)
print(s)
# s.remove(500) # KeyError: 500

'''删除没有的元素不报错'''
s.discard(500)
s.discard(300)

'''随机干掉一个元素'''
s.pop()
'''没有参数传入,否则报错'''
# s.pop(400) # TypeError: set.pop() takes no arguments (1 given)

print(s)

s.clear() # 全部元素清空
print(s)

结果

True
True
{80, 20, 405, 10, 60, 30}
{200, 10, 300, 80, 400, 20, 405, 60, 30}

{98, 99, 66, 200, 10, 300, 77, 80, 400, 20, 405, 55, 60, 30}
{99, 66, 200, 10, 77, 80, 400, 20, 405, 55, 60, 30}
set()

3.集合的操作

先了解几种集合操作的概念,再练习熟悉函数的使用

'''两个集合是否相等,元素相同就相等'''
s1={10,20,30,40}
s2= {30,20,10,40}
s3=set(range(10,70,10))

print(s1==s2) # True
print(s1!=s2) # Flase

'''子集和集合,'''
print('--------子集和集合----------')
print(s2.issubset(s1)) #True
print(s2.issubset(s3)) #True
print(s3.issubset(s1)) #False

'''超集和集合'''
print('--------超集和集合----------')
print(s2.issuperset(s3)) # False
print(s3.issuperset(s2)) # True

'''交集与集合,没有交集为True,有交集则为False'''
print('--------交集和集合----------')
print(s2.isdisjoint(s3)) # False

s4={100,200,300}
print(s2.isdisjoint(s4)) # True


s1=set(range(10,50,10))
s2=set(range(10,70,10))

print('-------------交集------------')
print(s1.intersection(s2)) # 交集
print(s1 & s2)  # 输出交集内容

print('-------------原集合------------')
print(s1)
print(s2)

print('-------------并集------------')
print(s1.union(s2))
print(s1 | s2)


'''差集是两个集合不共有的内容,以一个集合为标准'''
s1={10,20,30,40,44}
s2={10,20,30,40,50,60,66}
print('-------------差集------------')
print(s1.difference(s2))
print(s1-s2)

print('-------------原集合------------')
print(s1)
print(s2)

'''并集-交集'''
print('-------------对称差集------------')
print(s1.symmetric_difference(s2))
print(s1 ^ s2)
print((s1 | s2) - (s1 & s2))

结果

True
False
--------子集和集合----------
True
True
False
--------超集和集合----------
False
True
--------交集和集合----------
False
True
-------------交集------------
{40, 10, 20, 30}
{40, 10, 20, 30}
-------------原集合------------
{40, 10, 20, 30}
{40, 10, 50, 20, 60, 30}
-------------并集------------
{40, 10, 50, 20, 60, 30}
{40, 10, 50, 20, 60, 30}
-------------差集------------
{44}
{44}
-------------原集合------------
{20, 40, 10, 44, 30}
{66, 50, 20, 40, 10, 60, 30}
-------------对称差集------------
{66, 50, 44, 60}
{66, 50, 44, 60}
{66, 44, 50, 60}

4.字符串的操作-对齐

s='hello,Python'

print('-----居中对齐------')
print(s.center(20,'*'))

print('-----左对齐------')
print(s.ljust(20,'*'))
print(s.ljust(10))
print(s.ljust(20))

print('-----右对齐------')
print(s.rjust(20,'*'))
print(s.rjust(20))
print(s.rjust(10))

print('-----右对齐,但使用0填充------')
print(s.zfill(20))
print(s.zfill(10))
print('-8910'.zfill(8))

结果

-----居中对齐------
****hello,Python****
-----左对齐------
hello,Python********
hello,Python
hello,Python        
-----右对齐------
********hello,Python
        hello,Python
hello,Python
-----右对齐,但使用0填充------
00000000hello,Python
hello,Python
-0008910

5.字符串的操作-劈分

这个功能类似Excel分列的功能

s='hello world Python'
lst=s.split()
print(lst)

s1='hello|world|Python'
print(s1.split())
print(s1.split(sep='|'))
print(s1.split(sep='|',maxsplit=1)) # 从左侧开始劈分

'''rsplit()从右侧开始劈分'''
print(s1.rsplit())
print(s1.rsplit('|'))
print(s1.rsplit(sep='|',maxsplit=1)) # 从右侧开始劈分

结果

['hello', 'world', 'Python']
['hello|world|Python']
['hello', 'world', 'Python']
['hello', 'world|Python']
['hello|world|Python']
['hello', 'world', 'Python']
['hello|world', 'Python']

4.字符串的操作-其他函数

还是熟悉函数的使用,具体作用可以参照一开始概念中介绍的那张图

s='hello,python'

'''是否是合法的标识符'''
print('1.',s.isidentifier()) # False
print('2.','hello'.isidentifier())
print('3.','张三_'.isidentifier())
print('4.','张三'.isidentifier())

print('5.','\t'.isspace())

print('6.','abc'.isalpha())
print('7.','张三'.isalpha())
print('8.','张三1'.isalpha())      # False

print('9.','123'.isdecimal())
print('10.','123四'.isdecimal())      # False
print('11.','Ⅱ Ⅱ Ⅱ'.isdecimal())    # False

print('12.','123'.isnumeric())
print('13.','123'.isnumeric())
print('14.','Ⅱ Ⅱ Ⅱ'.isnumeric())  # False

print('15.','abc1'.isalnum())
print('16.','张三123'.isalnum())
print('17.','abc!'.isalnum())       # False

结果

1. False
2. True
3. True
4. True
5. True
6. True
7. True
8. False
9. True
10. False
11. False
12. True
13. True
14. False
15. True
16. True
17. False

总结

本章学了很多的函数啊,虽然很多但还是要勤加练习才能逐渐进步啊,诸君共勉!!!
请添加图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值