python demo3

# 数据容器  相当于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版权协议,转载请附上原文出处链接和本声明。