# 数据容器 相当于java中的集合
# 四大数据容器
# 列表list、元组tuple、字典dict、集合set
# 列表list
# 特点:
# 1,list中的每个元素的类型可以不唯一
# 2,list中的元素可以重复
# 3,list是可变的,元素可以修改,动态的删除
# 4,list是有序的
# 定义:
list1 = [1,1,1,2,3,4,'a','b','c','d',1.1,1.2,True,False]
print(list1,type(list1))
# list常见的操作
# 取元素
# 通过下标(索引index)
print(list1[6]) # 'a'
# 切片
# [起始位置:结束位置:步长]
print(list1[6:10])
print(list1[-4:])
# 反转 (返回一个新的)
print(list1[::-1])
# 修改元素
# 'a' =>'A'
list1[6]='A'
print(list1)
# 增加元素
list1.append('last')
list1.insert(3,1.1) # 插入
print(list1)
# 删除元素
list1.pop() # 默认将最后一个元素返回
list1.remove(2) # 根据指定的值 移除元素 只会移除一次
print(list1)
del list1[5]
print(list1)
# 其他操作
# 排序
list2=[1,5,4,2,10,3,7,6,9,8]
list2.sort() # 升序 倒序 list2.sort(reverse=True)
print(list2)
# 查找元素
print(list2.index(7))
'''
list2.extend([1,2,3,4])
print(list2)
'''
# 合并两个list
list3=[1,2,3,4]
print(list2+list3) # + 不会改变原有的list
list2.extend(list3) # 对原有的list2造成修改
print(list2)
# 反转 (对原有的进行修改)
list2.reverse()
print(list2)
# 统计元素出现的个数
print(list2.count(1))
# 清空列表
list2.clear()
print(list2)
print('*'*50)
# tuple元组(不可变)
# 特点:
# 1,tuple中的每个元素的类型可以不唯一
# 2,tuple中的元素可以重复
# 3,tuple是不可变的
# 4,tuple是有序的
# 定义
tuple1 = (1,1,1,2,2,3,4,5,6,'a','b','c',1.1,True)
print(tuple1,type(tuple1))
# 元组不支持修改
# tuple1[9] = 'A'
# 取元素
print(tuple1[9])
print('*' * 50)
# 集合 set (元素不可以重复)
# 特点:
# 1,set中的每个元素的类型可以不唯一
# 2,set中的元素不可以重复,会自动去重
# 3,set是可变的
# 4,set是无序的
# 定义
set1 = {1,1,1,2,2,2,3,4,5,'abc',True}
print(set1,type(set1))
# print(set1[0]) 无序,无法通过索引的方式取元素
set1.pop()
print(set1)
set1.add(2)
set1.add(2)
set1.add(3)
set1.add(6)
print(set1)
# 集合的运算
# 交集 并集 差集.....
set2 = {1,2,3,4,5,6}
set3 = {4,5,6,7,8,9}
print(set2 & set3)
print(set2 | set3)
print(set2 - set3)
# 字典 dict 相当于Java中的Map
# 特点
# 1、dict中的每一个元素都是K:V格式的
# 2、dict不支持通过index获取元素 都是通过key取value
# 3、dict是可变的
# 4、dict的key不能重复,是唯一的 key必须是不可变的(基本数据类型,tuple)
# 5、如果key中1和true以及0和false同时存在 会进行覆盖
# 6、查询速度不会随着元素的增多而变慢(因为会默认对key做索引)
# 7、dict中value的类型可以是任意的
# 定义
dict1 = {
'k1': 'v1',
'k2':'v2',
'k2':'vv2', # 前面有k2,所以会覆盖
0:'0', # 默认表示false
1:'1', # 默认表示true
2:'2',
(1,2,3):'tuple 1,2,3',
# [4,5,6]:'list 4,5,6' # 不能运行,因为list是可变的
True:'True',
False:'False',
# {’k1':'v1'}:'dict v' 报错 因为集合是可变的
'kk2': 1,
'kk3': 1.1,
'kk4': [1, 2, 3],
'kk5': {
'kkk5': {
'kkkk5': 'vvvv5' # 嵌套
}
}
}
print(dict1,type(dict1))
# print(dict1[0]) 不支持通过下标取元素
# 通过key取value
print(dict1['k1'])
dict1['k1']='vv1'
print(dict1)
# 推荐使用get获取元素
print(dict1.get('k1'))
print(dict1['k1'])
# print(dict1['kk1'] 会报错
print(dict1.get('kk1','如果key不存在就返回')) # 不存在(为空时) 会输出None
print(dict1.get('kk5').get('kkk5').get('kkkk5'))
# 常见操作
print(dict1.keys()) # 获取所有的key
print(dict1.values())
print(dict1.items()) # 返回list
# 遍历数据容器
# for 变量名 in 数据容器
list1 =[1,2,3,4,5]
for i in list1:
# 前面必须有4个空格(语法规范)
print(i)
# 定义只有一个元素的元组时,要加上, (1,)
tuple1 = (1,)
print(tuple1,type(tuple1))
tuple1 = (1,2,3,4,5)
for i in tuple1:
print(i)
set1 ={1,1,1,2,3,4,5,5,6}
for i in set1:
print(i) # 打印去重后的结果
dict1 = {
'k1':'v1',
'k2':'v2',
'k3':'v3'
}
# 默认是对key进行遍历
for key in dict1:
print(key)
for kv in dict1.items():
print(kv)
for kv in dict1.items():
print(kv[0],kv[1])
for k,v in dict1.items():
print(k,v)
for key in dict1:
print(key,dict1.get(key))
# 列表推导式
# 创建一个 1~10的list
list1 = [1,2,3,4,5,6,7,8,9,10]
print(list1)
# 创建一个 1~100的list
# range(起始位置:结束位置:步长)函数
for i in range(1,101,1):
print(i)
list100 = []
for i in range(1,100,1):
list100.append(i) # 增加元素
print(list100)
# 列表推导式
print([i for i in range(1,100,1) if i % 2 ==1]) # 取奇数
# join方法 与 split方法相反
str1 = 'java,scala,python'
list3 = str1.split(",")
print(list3,type(list3))
str2 = "|".join(list3)
print(str2,type(str2))
# 9*9乘法表
# print("\n".join(["\t".join(["{} * {}= {}".format(i,j,i * j) for j in range(1,i+1)]) for i in range(1,10)]))
for i in range(1,10):
for j in range(1,i+1):
print("{} * {} = {}\t".format(i,j,i*j),end="")
print()
for i in range(1,10):
list1 =[]
for j in range(1,i+1):
list1.append("{} * {} = {}".format(i,j,i*j))
print("\t".join(list1))
list_i = []
for i in range(1,10):
# priiiiint("\t").join(["{} * {} = {}".format(i,j,i*j) for j in range(1,i + 1)])
list_i.append("\t".join(["{} * {} = {}".format(i,j,i*j)for j in range(1,i +1)]))
print("\n".join(list_i))
print("\n".join(["\t".join(["{} * {} = {}".format(i,j,i*j)for j in range(1,i +1)]) for i in range(1,10) ]))版权声明:本文为weixin_53282302原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。