赞
踩
序列:是指内容连续,有序的,可以使用下标索引的一系列数据容器了。
切片:从一个大的序列,取出一个子序列就叫做切片操作。
序列[起始下标:结束下标:步长]
起始下标表示从何处开始,可以留空,留空作为从头开始。
结束下标(不含)表示何处结束,可以留空,留空视作取到结尾。
步长表示依次取元素的间隔:
步长为1,表示一个个取元素,步长为2,每跳过一个元素取,步长N表示跳过N-1个元素取,步长为负数表示反向取(起始下标,和结束下标也要反向标记)。
切片操作,不会影响到序列本身,而是回返回一个新序列。
- #对list进行切片
- my_list=[0,1,2,3,4,5,6]
- result1=my_list[1:4:1]#步长默认是1,可以不写
- print(f"结果1是:{result1}")
- #对tuple进行切片
- my_tuple=[0,1,2,3,4,5,6]
- result2=my_tuple[:]
- print(f"结果2是:{result2}")
- #对str进行切片
- my_str="01234567"
- result3=my_str[::2]
- print(f"结果3是:{result3}")
- #对str切片,从头开始,步数为-1
- result4=my_str[::-1]
- print(f"结果4是:{result4}")
- #对列表切片从3开始到1结束,步长为-1
- my_list=[0,1,2,3,4,5,6]
- result5=my_list[3:1:-1]
- print(f"结果5是:{result5}")
- #对元组取子序列,步长为-2
- my_tuple=(0,1,2,3,4,5,6)
- result6=my_tuple=my_tuple[::-2]
- 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)
- my_str="万过薪月,员序程马黑来,nohtyP学"
- new_my_str1=my_str[::-1][9:14]
- print(f"逆序输出1:{new_my_str1}")
- my_str="万过薪月,员序程马黑来,nohtyP学"
- new_my_str2=my_str[5:10][::-1]
- print(f"逆序输出1:{new_my_str2}")
- my_str="万过薪月,员序程马黑来,nohtyP学"
- new_my_str3=my_str.split(",")[1].replace("来","")[::-1]
- print(f"逆序输出3:{new_my_str3}")
结果:
逆序输出1:黑马程序员
逆序输出1:黑马程序员
逆序输出3:黑马程序员
列表可修改,支持重复元素且有序。元组、字符串不可修改、支持重复元素且有序。具有支持重复元素的局限,去重操作就不方便。
集合,不支持重复元素,且无序。
- my_set={"传智教育","黑马程序员","itheima","传智教育","黑马程序员","itheima","传智教育","黑马程序员","itheima"}
- my_set_empty=set()#定义空集合
- print(f"my_set的内容是:{my_set},类型是“{type(my_set)}")
- #由此可知集合不支持重复元素,且不能保证顺序
- print(f"my_set_empty的内容是:{my_set_empty},类型是“{type(my_set_empty)}")
结果:
my_set的内容是:{'黑马程序员', 'itheima', '传智教育'},类型是“<class 'set'>
my_set_empty的内容是:set(),类型是“<class 'set'>
注意:集合是无序的,所以集合不支持下标索引访问,但是允许修改。
- #添加
- my_set.add("Python")
- my_set.add("传智教育")
- print(f"my_set添加元素后的结果是:{my_set}")
结果:
my_set添加元素后的结果是:{'黑马程序员', 'Python', 'itheima', '传智教育'}
- #移除
- my_set.remove("黑马程序员")
- print(f"移除黑马程序员后的结果是{my_set}")
结果:
移除黑马程序员后的结果是{'Python', '传智教育', 'itheima'}
列表中可以通过pop()指定下标索引取出。
而集合中不支持下标索引,所以随机取出值。
- #取出
- my_set={"传智教育","黑马程序员","itheima"}
- element=my_set.pop()
- print(f"集合被取出的元素为:{element},取出元素后还有{my_set}")
结果:
集合被取出的元素为:传智教育,取出元素后还有{'itheima', '黑马程序员'}
- #清空
- my_set.clear()
- print(f"集合被清空后的结果是:{my_set}")
结果
集合被清空后的结果是:set()
语法:集合1.difference(集合2)
结果:得出一个新集合,集合1和集合2不变。
- #取出两个集合的差集
- set1={1,2,3}
- set2={1,5,6}
- set3=set1.difference(set2)
- print(f"取出差集后的结果是{set3}")
- print(f"取出差集后,则原来的set1的内容为:{set1}")
- print(f"取出差集后,则原来的set2的内容为:{set2}")
结果:
取出差集后的结果是{2, 3}
取出差集后,则原来的set1的内容为:{1, 2, 3}
取出差集后,则原来的set2的内容为:{1, 5, 6}
语法:集合1.difference_update(集合2)
结果:对比集合1和集合2,,在集合1中删除和集合2相同的元素,集合1被修改,集合2不变。
- #消除两个集合的差集
- set1={1,2,3}
- set2={1,5,6}
- set1.difference_update(set2)
- print(f"消除差集后,集合1的结果:{set1}")
- print(f"消除差集后,集合2的结果:{set2}")
结果:
消除差集后,集合1的结果:{2, 3}
消除差集后,集合2的结果:{1, 5, 6}
7.合并功能(使两个集合合并)
语法:集合1.union(集合2)
结果:得到一个新集合,集合1和集合2不变。
- #合并
- set1={1,2,3}
- set2={1,5,6}
- set3=set1.union(set2)
- print(f"集合合并的结果:{set3}")
- print(f"集合合并后,原有集合set1:{set1}")
- print(f"集合合并后,原有集合set2:{set2}")
结果:
集合合并的结果:{1, 2, 3, 5, 6}
集合合并后,原有集合set1:{1, 2, 3}
集合合并后,原有集合set2:{1, 5, 6}
语法:len(集合名)
- #计算集合元素的数量len()
- set1={1,2,3,4,5,1,2,3,4,5}
- num=len(set1)
- print(f"集合内的元素数量有{num}个")
结果:
集合内的元素数量有5个
不支持下标索引,不能使用while循环,可以用for循环。
- #集合的遍历
- set1={1,2,3,4,5}
- for element in set1:
- print(f"集合的元素有{element}")
结果:
集合的元素有1
集合的元素有2
集合的元素有3
集合的元素有4
集合的元素有5
可以容纳多个数据
可以容纳不同类型的数据(混装)
数据是无序存储的。不支持下标索引
不允许重复数据存在
可以修改
支持for循环遍历,不支持while循环遍历
用for循环遍历列表,存入集合,再遍历集合打印。
- my_list=['黑马程序员','传智播客','黑马程序员','传智播客','itheima','itcast','itheima','itcast','best']
- set1=set()
- for item in my_list:
- set1.add(item)
- for element in set1:
- print(f"存入集合的结果有{element}")
结果:
存入集合的结果有黑马程序员
存入集合的结果有itheima
存入集合的结果有best
存入集合的结果有itcast
存入集合的结果有传智播客
不积跬步无以至千里,不积小流无以成江海。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。