#字面量
[元素1,元素2,元素3,...]
#定义变量
变量名称 = [元素1,元素2,元素3,...]
#定义空列表
变量名称 = []
变量名称 = list()
列表内的每一个数据,称之为元素。以[]作为表示,每个元素之间逗号分隔
# 定义一个列表 list
names = ["mahaonan","chengminghui","lize","wusai"]
print(names)
print(type(names))
print("----------------")
content = ["mahaonan",111,True]
print(content)
print(type(content))
print("----------------")
# 定义一个嵌套的列表
my_list = [[1,2,3],[7,8,9]]
print(my_list)
print(type(my_list))
print("----------------")
注意事项:列表可以一次存储多个数据,且可以不是同一类型的数据,支持嵌套
列表的下标索引:正向(与Java一致)
# 通过下标索引取出对应位置的数据
names = ["mahaonan","chengminghui","lize","wusai"]
# 列表[下标索引] 从前向后从0开始, 从后向前从-1开始 -1 -2 -3...
print(names[0])
print(names[1])
print(names[2])
print(names[3])
列表的下标索引:反向
# 通过下标索引取出数据(倒叙取出)
print(names[-1])
print(names[-2])
print(names[-3])
print(names[-4])
嵌套列表的下标
# 取出嵌套列表的元素
my_list = [[1,2,3],[7,8,9]]
print(my_list[1][1])
列表的常用操作
names = ["mahaonan","chengminghui","lize","wusai"]
# 1.1查找某元素在列表内的下表索引
print(f"lize在列表中的索引位置是:{names.index('lize')}")
# 1.2如果被查找的元素不存在,则会报错
# print(names.index(111))
# 2.修改指定下表索引的值
names[0] = "马浩楠"
# 3.在指定下表位置插入新元素
names.insert(4,"fox")
print(f"列表添加后的内容是:{names}")
# 4.在列表的尾部追加 单个 新元素
names.append("浩楠")
print(f"列表追加新元素后的内容是:{names}")
# 5.在列表的尾部追加 一批 新元素
nums = [1,2,3]
names.extend(nums)
# 6.1方式1:del 列表[下标]
del names[0]
print(f"列表删除元素后的内容是:{names}")
#6.2方式2: 列表.pop(下表)
delElement = names.pop(4)
# 7.删除某个元素在列表中的第一个匹配项
names = ["mahaonan","chengminghui","lize","wusai","mahaonan"]
names.remove("mahaonan")
print(f"删除列表中的元素后,列表的内容是:{names}")
# 8.清空列表
nums = [1,2,3,4]
nums.clear()
print(f"清空列表后,列表的内容是:{nums}")
# 9.统计列表内某元素的数量
nums = [1,2,3,4,2,4,2,2]
count = nums.count(2)
print(f"查询数据2在该nums列表中的个数为:{count}")
# 10.统计列表中全部的元素数量
count = len(nums)
print(f"统计nums列表中元素的个数是:{count}")
列表方法总览
列表的特点
练习
# 1.定义列表,并用变量接收
ages = [21,25,21,23,22,20]
# 2.追加数字31,到列表尾部
ages.append(31)
# 3.追加一个新列表[29,33,30],到列表的尾部
ages.extend([29,33,30])
# 4.取出第一个元素 (21)
print(ages[0])
# 5.取出最后一个元素(30)
print(ages[-1])
# 6.查找元素31,在列表中的下标位置
print(f"元素31在列表中的下标位置:{ages.index(31)}")
names = ["马浩楠","程明辉","李泽","吴赛"]
def list_while():
i = 0
while i<len(names):
print(names[i],end='\t')
i += 1
print()
list_while()
def list_for():
for i in names:
print(i,end='\t')
list_for()
nums = [1,2,3,4,5,6,7,8,9,10]
even = []
for i in nums:
if i%2==0:
even.append(i)
print(f"通过for循环,从列表:{nums}中取出偶数,组成新列表:{even}")
i = 0
even = []
while i<len(nums):
if nums[i]%2==0:
even.append(nums[i])
i += 1
print(f"通过while循环,从列表:{nums}中取出偶数,组成新列表:{even}")
列表是可以修改的,如果想要传递的信息不被篡改,那么元组就较为合适
定义元组
# 字面量
(元素1,元素2,元素3,....)
# 定义元组变量
变量名称 = (元素1,元素2,元素3,....)
# 定义空元组
变量名称 = ()
变量名称 = tuple()
# 定义元组 tuple
t1 = ("马浩楠",22,True)
t2 = ()
t3 = tuple()
print(f"t1的类型是:{type(t1)},内容是:{t1}")
print(f"t2的类型是:{type(t2)},内容是:{t2}")
print(f"t3的类型是:{type(t2)},内容是:{t2}")
# 元组的嵌套
t5 = ((1,2,3),(7,8,9))
print(f"t5的类型是:{type(t5)},内容是:{t5}")
注意点:元组只有一个数据的时候,定义的类型为str,数据后需要添加逗号,则改数据为元组
# 定义单个元组的元素
t4 = ("hello",)
print(f"t4的类型是:{type(t4)},内容是:{t4}")
t5 = ((1,2,3),(7,8,9))
# 取出嵌套元组的单个元素
print(f"取出t5元组中的8:{t5[1][1]}")
# 元组的操作:index 查找方法
t6 = ("马浩楠","程明辉","李泽","吴赛","马浩楠","马浩楠")
print(f"马浩楠在该元组中的下标为:{t6.index('马浩楠')}")
# 元组的操作:count 统计某个元素个数的方法
print(f"统计马浩楠在该元组中的个数:{t6.count('马浩楠')}")
# 元组的操作: len 函数统计元组数量
print(f"统计该元组中的数量:{len(t6)}")
注意事项
# 元组的元素是不可以修改的,但如果内嵌的有list列表,则可以修改list列表中的值
t = (1,2,["马浩楠","张林烟"])
print(f"t的元组内容是:{t}")
t[2][0] = "浩楠"
t[2][1] = "林燕"
print(f"t的元组内容是:{t}")
元组的遍历
t6 = ("马浩楠","程明辉","李泽","吴赛","马浩楠","马浩楠")
i = 0
while i<len(t6):
print(t6[i],end='\t')
i += 1
print()
for i in t6:
print(i,end='\t')
print()
元组的特点
练习
t = ("周杰伦",11,["football","music"])
# 2.1 查询其年龄所在的下标位置
print(f"年龄在该元组的下标为:{t.index(11)}")
# 2.2查询学生的姓名
print(f"学生的姓名为:{t[0]}")
# 2.3 删除学生爱好中的football
# 方式一:t[2].pop(t[2].index("football"))
del t[2][0]
print(f"删除学生爱好中的football,删除后的元组内容:{t}")
# 2.4 增加爱好:coding到爱好list内
t[2].append("coding")
print(f"增加爱好coding到list内,增加后的元组内容:{t}")
同元组一样,字符串是一个无法修改的数据容器
字符串的常用操作
# 通过下标索引取值
print(f"下标为2的值:{my_name[2]},取最后一个下标的值:{my_name[-1]}")
# index方法
print(f"haonan在该字符串中的下标位置:{my_name.index('haonan')}")
不是修改了字符串本身,而是得到了一个新的字符串
# replace方法:会返回新的字符串(替换后的)
print(f"将mahaonan替换为haonan,替换后的内容是:{my_name.replace('mahaonan','haonan')}")
字符串本身不变,而是得到了一个列表对象
# split 方法:会将字符串分割为列表返回
print(f"通过,来分割该字符串内容:{my_name.split(',')},类型为:{type(my_name.split(','))}")
# strip() 方法:取出前后的空格
str = " my name is mahaonan "
print(f"去除空格后的内容为:{str.strip()}")
传入指定字符串是12,按照单个字符进行去除,1 和 2 都会移出
# strip(指定字符) 方法:去除前后指定字符串
str = "123 my name is mahaonan 321"
print(f"去除前后123后的内容为:{str.strip('123')}")
# 统计字符串某字符的出现次数
print(f"统计n在该字符串中出现的次数:{my_name.count('n')}")
# 统计字符串的长度
print(f"统计该字符串的长度:{len(my_name)}")
字符串常用API总览
字符串特点:与元组相同
练习
str = "itheima itcast boxuegu"
# 统计字符串内有多少个 it 字符
print(f"字符串{str}中有:{str.count('it')}个it字符")
# 将字符串内的空格,全部替换为字符:|
str = str.replace(' ','|')
print(f"字符串{str},被替换空过后,结果:{str}")
# 按照 | 进行字符串分割,得到列表
str_list = str.split("|")
print(f"字符串{str},按照|分割后得到:{str_list}")
序列
序列的常用操作——切片
序列[起始下标:结束下标:步长]
注意:此操作不会影响序列本身,而是会得到一个新的序列(列表、元组、字符串)
# 对list进行切片,从1开始,4结束,步长1
my_list = [0,1,2,3,4,5,6,7]
print(f"结果1:{my_list[1:4:1]}")
# 对cuple进行切片,从头开始,到最后结束,步长1
my_cuple = (0,1,2,3,4,5,6,7)
print(f"结果2:{my_cuple[:]}")
# 对str进行切片,从头开始,到最后结束,步长2
my_str = "01234567"
print(f"结果3:{my_str[::2]}")
# 对str进进行切片,从头开始,到最后结束,步长-1
print(f"结果4:{my_str[::-1]}")
# 对list进行切片,从3开始,到1结束,步长-1
print(f"结果5:{my_list[3:1:-1]}")
# 对cuple进行切片,从头开始,到尾结束,步长-2
print(f"结果6:{my_cuple[::-2]}")
# 练习
str = "万过薪月,员序程马黑来,nohtyP学"
print(str[-10:-15:-1])
str = str[::-1]
print(str)
str_list = str.split(",")
print(str_list)
print(str_list[1][1::1])
集合,最主要的特点结束:不支持元素的重复(自带去重功能)、并且内容无序
集合的定义
# 字面量
{元素1,元素2,元素3,...}
# 定义集合变量
变量名称 = {元素1,元素2,元素3,...}
# 定义空集合
变量名称 = set()
和列表、元组、字符串等定义基本相同
集合的常用操作
因为集合是无序的,所以集合不支持下标索引访问,但是集合和列表一样,是允许修改的
# 定义集合
mySet = {"mahaonan","chengminghui","lize","wusai","mahaonan"}
print(f"集合的内容:{mySet}")
# 添加新元素
mySet.add("haonan")
# 移出元素
mySet.remove("mahaonan")
print(f"集合删除mahaonan元素后的内容为:{mySet}")
会得到一个元素的结果,同时集合本身被修改,元素被移出
# 随机取出一个元素
print(f"随机取出一个元素{mySet.pop()},取出元素后,原集合的内容是:{mySet}")
# 清空集合
mySet.clear()
print(f"清楚集合元素后的内容是:{mySet}")
会得到一个新集合,集合1和集合2不变
# 取2个集合的差集
set1 = {1,2,3,5,6}
set2 = {1,8,9,7}
print(f"取出两个集合的差集是:{set1.difference(set2)}") #2 3 5 6 原集合都不变
集合1被修改,集合2不变
# 消除2个集合的差集
set1.difference_update(set2)
print(f"消除两个集合的差集后,集合1的内容:{set1},集合2的内容:{set2}") # 集合1,消除了差集 2,3,5,6 集合2不变
得到新集合,集合1和集合2不变
# 2个集合合并为1个
set1 = {1,2,3}
set2 = {1,5,6}
newSet = set1.union(set2) # set1和set2集合合并,原集合不变,返回新的集合
print(f"合并后的集合内容是:{newSet}")
# 统计集合元素的数量
mySet = {"mahaonan","chengminghui","lize","wusai","mahaonan"}
print(f"集合元素的数量是:{len(mySet)}")
# 遍历集合
for i in mySet:
print(f"集合中的元素:{i}")
集合常用功能总结
集合的特点
案例
names = ["马浩楠","程明辉","李泽","吴赛","浩楠","程明辉","李泽","吴赛"]
mySet = set()
for i in names:
mySet.add(i)
print(f"元素去重后的集合对象:{mySet}")
# 定义字典
my_dict = {"马浩楠":99,"程明辉":88,"李泽":77,"吴赛":66}
print(f"字典内容是:{my_dict},类型是:{type(my_dict)}")
# 定义空字典
my_dict1 = {}
my_dict2 = dict()
print(f"字典内容是:{my_dict1},类型是:{type(my_dict1)}")
print(f"字典内容是:{my_dict2},类型是:{type(my_dict2)}")
# 定义重复key的字段
my_dict = {"马浩楠":99,"马浩楠":88,"李泽":77,"吴赛":66}
print(f"重复字典内容是:{my_dict}") #{'马浩楠':88,'李泽':77,'吴赛':66}
# 从字典中基于key获取value
print(my_dict["李泽"])
# 定义嵌套字典
my_dict = {
"马浩楠":{
"数学":88,
"英语":59,
"语文":55
},"程明辉":{
"数学":78,
"英语":77,
"语文":92
}
}
# 从嵌套字典中获取数据
print(my_dict["马浩楠"]["语文"])
字典key不可以重复,所以对已经存在的key执行操作则是修改,没有key则是新增
my_dict = {"马浩楠":99,"程明辉":88,"李泽":77,"吴赛":66}
# 新增元素
my_dict["浩楠"] = 100
print(f"新增元素后的字典内容:{my_dict}")
# 更新元素 新增和更新是一个方法,字典内存有数据则为修改,若没有该key 则增加
my_dict["马浩楠"] = 60
print(f"更新元素后的字典内容:{my_dict}")
# 删除元素
score = my_dict.pop("浩楠")
print(f"删除key 浩楠后的字典内容:{my_dict},删除的元素value值为:{score}")
# 清空元素
my_dict.clear()
print(f"清空元素后的字典内容:{my_dict}")
# 获取全部的key
my_dict = {"马浩楠":99,"程明辉":88,"李泽":77,"吴赛":66}
keys = my_dict.keys()
print(f"获取所有的key:{keys},返回的类型是:{type(keys)}")
# 遍历字典
for i in keys:
print(f"字典的key为:{i}")
print(f"字典的value为:{my_dict[i]}")
for i in my_dict:
print(f"2字典的key为:{i}")
print(f"2字典的value为:{my_dict[i]}")
# 统计字典内的元素数量
print(f"字典的元素数量为:{len(my_dict)}")
字典的特点
通过key获取value,key值不可以重复(重复则覆盖前面的)
可以修改
练习
emps = {
"王力宏":{
"部门":"科技部",
"工资":3000,
"级别":1
},"周杰伦":{
"部门":"市场部",
"工资":5000,
"级别":2
},"林俊杰":{
"部门":"市场部",
"工资":7000,
"级别":3
},"张学友":{
"部门":"科技部",
"工资":4000,
"级别":1
},"刘德华":{
"部门":"市场部",
"工资":6000,
"级别":2
}
}
print("全体员工当前信息如下:")
print(emps)
for i in emps:
if emps[i]["级别"]==1:
emps[i]["级别"] += 1
emps[i]["工资"] += 1000
print(emps)
遍历
通用统计功能
my_list = [1,2,3,4,5]
my_tuple = (1,2,3,4,5)
my_str = "abcdefg"
my_set = {1,2,3,4,5}
my_dict = {"key1":1,"key2":2,"key3":3,"key4":4,"key5":5}
# len 元素个数
print(f"列表 元素个数有:{len(my_list)}")
print(f"元组 元素个数有:{len(my_tuple)}")
print(f"字符串 元素个数有:{len(my_str)}")
print(f"集合 元素个数有:{len(my_set)}")
print(f"字典 元素个数有:{len(my_dict)}")
# max 最大元素值
print(f"列表 元素最大值:{max(my_list)}")
print(f"元组 元素最大值:{max(my_tuple)}")
print(f"字符串 元素最大值:{max(my_str)}")
print(f"集合 元素最大值:{max(my_set)}")
print(f"字典 元素最大值:{max(my_dict)}")
# min 最小元素值
print(f"列表 元素最小值:{min(my_list)}")
print(f"元组 元素最小值:{min(my_tuple)}")
print(f"字符串 元素最小值:{min(my_str)}")
print(f"集合 元素最小值:{min(my_set)}")
print(f"字典 元素最小值:{min(my_dict)}")
转换功能
# 类型转换:容器转列表
print(f"列表转列表的结果是:{list(my_list)}")
print(f"元组转列表的结果是:{list(my_tuple)}")
print(f"字符串转列表的结果是:{list(my_str)}")
print(f"集合转列表的结果是:{list(my_set)}")
print(f"字典转列表的结果是:{list(my_dict)}")
# 类型转换:容器转元组
print(f"列表转元组的结果是:{tuple(my_list)}")
print(f"元组转元组的结果是:{tuple(my_tuple)}")
print(f"字符串转元组的结果是:{tuple(my_str)}")
print(f"集合转元组的结果是:{tuple(my_set)}")
print(f"字典转元组的结果是:{tuple(my_dict)}")
# 类型转换:容器转字符串
print(f"列表转字符串的结果是:{str(my_list)}")
print(f"元组转字符串的结果是:{str(my_tuple)}")
print(f"字符串转字符串的结果是:{str(my_str)}")
print(f"集合转字符串的结果是:{str(my_set)}")
print(f"字典转字符串的结果是:{str(my_dict)}")
# 类型转换:容器转集合
print(f"列表转集合的结果是:{set(my_list)}")
print(f"元组转集合的结果是:{set(my_tuple)}")
print(f"字符串转集合的结果是:{set(my_str)}")
print(f"集合转集合的结果是:{set(my_set)}")
print(f"字典转集合的结果是:{set(my_dict)}")
排序功能 sorted
# sorted排序
my_list = [3,1,4,2,5]
my_tuple = (3,1,4,2,5)
my_str = "bdecagf"
my_set = {3,1,4,2,5}
my_dict = {"key3":1,"key1":2,"key4":3,"key2":4,"key5":5}
print(f"列表对象的排序结果:{sorted(my_list)}")
print(f"元组对象的排序结果:{sorted(my_tuple)}")
print(f"字符串对象的排序结果:{sorted(my_set)}")
print(f"集合对象的排序结果:{sorted(my_list)}")
print(f"字典对象的排序结果:{sorted(my_dict)}")
# 所有排序后返回的都是list列表,字典对象只会保留key
print("-------------------------------------")
# 反转
print(f"列表对象的排序结果:{sorted(my_list,reverse=True)}")
print(f"元组对象的排序结果:{sorted(my_tuple,reverse=True)}")
print(f"字符串对象的排序结果:{sorted(my_set,reverse=True)}")
print(f"集合对象的排序结果:{sorted(my_list,reverse=True)}")
print(f"字典对象的排序结果:{sorted(my_dict,reverse=True)}")
与Java一致
# abc 比较 abd
print(f"abc > abd——{'abc' > 'abd'}")
# a 比较 ab
print(f"a > ab——{'a' > 'ab'}")
# a 比较 A
print(f"a > A——{'a' > 'A'}")
# key1 比较 key2
print(f"key1 > key2——{'key1' > 'key2'}")