当前位置:   article > 正文

Python-day12(数据容器【序列】的切片,集合的定义与操作)_取出差集和消除差集有区别吗

取出差集和消除差集有区别吗

 数据容器【序列】的切片

序列:是指内容连续,有序的,可以使用下标索引的一系列数据容器了。

切片:从一个大的序列,取出一个子序列就叫做切片操作。

语法结构:

序列[起始下标:结束下标:步长]

起始下标表示从何处开始,可以留空,留空作为从头开始。

结束下标(不含)表示何处结束,可以留空,留空视作取到结尾。

步长表示依次取元素的间隔:
步长为1,表示一个个取元素,步长为2,每跳过一个元素取,步长N表示跳过N-1个元素取,步长为负数表示反向取(起始下标,和结束下标也要反向标记)。

切片操作,不会影响到序列本身,而是回返回一个新序列。

示例

  1. #对list进行切片
  2. my_list=[0,1,2,3,4,5,6]
  3. result1=my_list[1:4:1]#步长默认是1,可以不写
  4. print(f"结果1是:{result1}")
  5. #对tuple进行切片
  6. my_tuple=[0,1,2,3,4,5,6]
  7. result2=my_tuple[:]
  8. print(f"结果2是:{result2}")
  9. #对str进行切片
  10. my_str="01234567"
  11. result3=my_str[::2]
  12. print(f"结果3是:{result3}")
  13. #对str切片,从头开始,步数为-1
  14. result4=my_str[::-1]
  15. print(f"结果4是:{result4}")
  16. #对列表切片从3开始到1结束,步长为-1
  17. my_list=[0,1,2,3,4,5,6]
  18. result5=my_list[3:1:-1]
  19. print(f"结果5是:{result5}")
  20. #对元组取子序列,步长为-2
  21. my_tuple=(0,1,2,3,4,5,6)
  22. result6=my_tuple=my_tuple[::-2]
  23. print(f"结果6是:{result6}")

结果:

结果1是:[1, 2, 3]
结果2是:[0, 1, 2, 3, 4, 5, 6]
结果3是:0246
结果4是:76543210
结果5是:[3, 2]
结果6是:(6, 4, 2, 0)

练习:

  1. my_str="万过薪月,员序程马黑来,nohtyP学"
  2. new_my_str1=my_str[::-1][9:14]
  3. print(f"逆序输出1:{new_my_str1}")
  4. my_str="万过薪月,员序程马黑来,nohtyP学"
  5. new_my_str2=my_str[5:10][::-1]
  6. print(f"逆序输出1:{new_my_str2}")
  7. my_str="万过薪月,员序程马黑来,nohtyP学"
  8. new_my_str3=my_str.split(",")[1].replace("来","")[::-1]
  9. print(f"逆序输出3:{new_my_str3}")

结果:

逆序输出1:黑马程序员
逆序输出1:黑马程序员
逆序输出3:黑马程序员

集合的定义与操作

列表可修改,支持重复元素且有序。元组、字符串不可修改、支持重复元素且有序。具有支持重复元素的局限,去重操作就不方便。

集合,不支持重复元素,且无序。

基础定义语法:

集合的性质解释和定义方法的验证

  1. my_set={"传智教育","黑马程序员","itheima","传智教育","黑马程序员","itheima","传智教育","黑马程序员","itheima"}
  2. my_set_empty=set()#定义空集合
  3. print(f"my_set的内容是:{my_set},类型是“{type(my_set)}")
  4. #由此可知集合不支持重复元素,且不能保证顺序
  5. print(f"my_set_empty的内容是:{my_set_empty},类型是“{type(my_set_empty)}")

结果:

my_set的内容是:{'黑马程序员', 'itheima', '传智教育'},类型是“<class 'set'>
my_set_empty的内容是:set(),类型是“<class 'set'>

注意:集合是无序的,所以集合不支持下标索引访问,但是允许修改。

集合的操作 

总结:

1.添加新元素.add()函数
  1. #添加
  2. my_set.add("Python")
  3. my_set.add("传智教育")
  4. print(f"my_set添加元素后的结果是:{my_set}")

结果:

my_set添加元素后的结果是:{'黑马程序员', 'Python', 'itheima', '传智教育'}

2.移除元素.remove()函数
  1. #移除
  2. my_set.remove("黑马程序员")
  3. print(f"移除黑马程序员后的结果是{my_set}")

结果:

移除黑马程序员后的结果是{'Python', '传智教育', 'itheima'} 

3.取出元素.pop()函数 

列表中可以通过pop()指定下标索引取出。

而集合中不支持下标索引,所以随机取出值。

  1. #取出
  2. my_set={"传智教育","黑马程序员","itheima"}
  3. element=my_set.pop()
  4. print(f"集合被取出的元素为:{element},取出元素后还有{my_set}")

结果:

集合被取出的元素为:传智教育,取出元素后还有{'itheima', '黑马程序员'}
 

4.清空集合.clear()函数
  1. #清空
  2. my_set.clear()
  3. print(f"集合被清空后的结果是:{my_set}")

 结果

集合被清空后的结果是:set()

5.取两个集合的差集(集合1有,集合2没有的)

语法:集合1.difference(集合2)

结果:得出一个新集合,集合1和集合2不变。

  1. #取出两个集合的差集
  2. set1={1,2,3}
  3. set2={1,5,6}
  4. set3=set1.difference(set2)
  5. print(f"取出差集后的结果是{set3}")
  6. print(f"取出差集后,则原来的set1的内容为:{set1}")
  7. print(f"取出差集后,则原来的set2的内容为:{set2}")

结果:

取出差集后的结果是{2, 3}
取出差集后,则原来的set1的内容为:{1, 2, 3}
取出差集后,则原来的set2的内容为:{1, 5, 6}

6.消除差集(消除两个集合的差集)

语法:集合1.difference_update(集合2)

结果:对比集合1和集合2,,在集合1中删除和集合2相同的元素,集合1被修改,集合2不变。

  1. #消除两个集合的差集
  2. set1={1,2,3}
  3. set2={1,5,6}
  4. set1.difference_update(set2)
  5. print(f"消除差集后,集合1的结果:{set1}")
  6. print(f"消除差集后,集合2的结果:{set2}")

结果:

消除差集后,集合1的结果:{2, 3}
消除差集后,集合2的结果:{1, 5, 6}
7.合并功能(使两个集合合并)

语法:集合1.union(集合2)

结果:得到一个新集合,集合1和集合2不变。

  1. #合并
  2. set1={1,2,3}
  3. set2={1,5,6}
  4. set3=set1.union(set2)
  5. print(f"集合合并的结果:{set3}")
  6. print(f"集合合并后,原有集合set1:{set1}")
  7. print(f"集合合并后,原有集合set2:{set2}")

结果:

集合合并的结果:{1, 2, 3, 5, 6}
集合合并后,原有集合set1:{1, 2, 3}
集合合并后,原有集合set2:{1, 5, 6}

7.统计集合元素数量

语法:len(集合名)

  1. #计算集合元素的数量len()
  2. set1={1,2,3,4,5,1,2,3,4,5}
  3. num=len(set1)
  4. print(f"集合内的元素数量有{num}个")

结果:

集合内的元素数量有5个

8.集合的遍历

不支持下标索引,不能使用while循环,可以用for循环。

  1. #集合的遍历
  2. set1={1,2,3,4,5}
  3. for element in set1:
  4. print(f"集合的元素有{element}")

结果:

集合的元素有1
集合的元素有2
集合的元素有3
集合的元素有4
集合的元素有5


集合的总结:

可以容纳多个数据

可以容纳不同类型的数据(混装)

数据是无序存储的。不支持下标索引

不允许重复数据存在

可以修改

支持for循环遍历,不支持while循环遍历

集合练习:

用for循环遍历列表,存入集合,再遍历集合打印。

  1. my_list=['黑马程序员','传智播客','黑马程序员','传智播客','itheima','itcast','itheima','itcast','best']
  2. set1=set()
  3. for item in my_list:
  4. set1.add(item)
  5. for element in set1:
  6. print(f"存入集合的结果有{element}")

结果:

存入集合的结果有黑马程序员
存入集合的结果有itheima
存入集合的结果有best
存入集合的结果有itcast
存入集合的结果有传智播客


不积跬步无以至千里,不积小流无以成江海。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/75383
推荐阅读
相关标签
  

闽ICP备14008679号