# 数据容器
# list、tuple、str、set、dict
# 元素可以修改:list、dict、set
# 元素不可以修改:tuple、str
# list
# 删除元素
# del:根据下标进行删除
# pop:删除最后一个元素 也可以传入下标去指定删除
# remove:根据元素的值进行删除,如果列表中存在多个同名元素只会删除第一个,后面的不会删除
# 列表的基本操作:增加元素、合并列表、查找元素、查找下表
# a = [21, 25, 21, 23, 22, 20]
# a.append(31)
# print(a)
# b = [29, 33, 30]
# a.extend(b)
# print(a)
# print(a[0])
# print(a[-1])
# print(a.index(31))
# count(1) # 获取某个元素个数
# 取出列表中的偶数,加入到另一列表中for、while
# a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# b = []
# c = []
# for i in a:
# if i % 2 == 0:
# b.append(i)
# print(b)
#
# index = 0
# while index < len(a):
# if a[index] % 2 ==0:
# c.append(a[index])
# index +=1
# print(c)
# 列表推导式
# tuple
a_tuple = (1,2,3,4)
a_tuple[0] # 1
# a_tuple[3] = 5 # 这会报错,不能修改元素
# 注意,元素只有一个元素的元组,需要在唯一的元素后写一个逗号
a = (11,) # 不加逗号类型判断会是int
# 切片的使用相同、count用来计数某个元素出现的次数,使用方法也相同
# list(tuple) ---> 元组转列表
# tuple(list) ---> 列表转元组
# 可以通过元组转列表之后进行修改,再把列表转元组
# 字符串 a.replace(' ', ' ') 替换操作
# a.split(','):用逗号分割,结果是列表类型
# 字典
# 可以容纳多个数据、可以容纳不同类型的数据
# 每一份数据都是KeyValue键值对
# 可以通过Key获取到Value,Key不可重复(会覆盖前面的Key)
# 不支持下标索引
# 可以修改(增加或删除更新元素)
# 支持for循环,不支持while循环
person ={'name':'小明','age':'18'}
print(person['name']) # 查询时要str形式
# 不能使用person.name的方式来访问字典中的数据
# 小明 get后面还可以传第二个参数,意味如果找不到该key的value值的话
# 使用.的方式,获取字典中不存在的key的时候 不会报错会返回一个none
print(person.get('name')) #可以使用如下方式来访问
# 字典修改
person['name'] = '张三'
person['sex'] = '男'
# 字典的删除
# pop删除字典中指定的某一个元素
# popitem删除最后面的一个键值
# del
# 1.删除字典中指定的某一个元素
# 2.删除整个字典
# clear 1.清空字典 但是保留字典对象
person = {'name':'小明','age':18}
person.pop('name')
del person['age']
del person #整个删除 # 此时如果在下面打印person会出现报错 person is not defined
person.clear() #此时如果在下面打印person会打印出 {}
# 字典的遍历
person = {'name':'小明','age':18,'sex':'男'}
# 遍历字典的key
# 字典.keys() 方法 获取字典中所有的key值
for key in person.keys():
print(key)
# 遍历字典的value
# 字典.values() 方法 获取字典中所有的values值
for value in person.values():
print(value)
# 遍历字典的key和value 、、、items
for key,value in person.items():
print(key,value)
# 遍历字典的项/元素
# ('name', '小明')
# ('age', 18)
# ('sex', '男')
for item in person.items():
print(item)
# set -- {}
# 集合中不能有重复的值
# 集合是可修改的
list = [1,3,6,8,9,9,1,2,3,9]
set_list = set(list)
print(set_list)
set_list.add(10)
print(set_list)
set_list.remove(10)
print(set_list)
# 合并 update
set1.update(set2) #把2并进1
# 移除
set.remove() #如果传入的值不存在的话会报错
set.discard() #传入的值不存在的话不会报错
del set #整个删除
set.clear() # 清空
set.pop() #随机删除一个元素
# 集合
union # 并集 简写 & set2 & set3
difference # 差集 简写 - set2 - set3
intersection # 交集 简写 | set2 | set3
# 例 产生5组(不允许重复),字母和数字组成4位验证码
import random
code_set = set()
s = 'ewqrrtuyyutifgsgsdfg012132254678731'
while True:
code = ''
for i in range(4):
# r =random.choice(s) 这是使用choice的,也可以使用randint
# code +=r
index = random.randint(0,len(s)-1)
code +=s[index]
code_set.add(code)
if len(code_set) ==5:
break
print(code_set)
# 公共方法
# ```
# max()找出最大值
# list = [1,2,5,6,9]
# print(max(list)) # 9
# min()找出最小值
# sum()求和
# abs()绝对值
# sorted()升序排序排序,但是返回的是列表 添加参数 reverse=True 变为降序排序
# chr() 输入ASSC码值返回对应的字母
# ord() 输入字母返回ASSC码值
# isinstance(a,int) 判断类型 第一个参数是变量,第二个参数是类型,如果是则返回True,反之是False
例 产生5组(不允许重复),字母和数字组成4位验证码
import random
code_set = set()
s = 'ewqrrtuyyutifgsgsdfg012132254678731'
while True:
code = ''
for i in range(4):
# r =random.choice(s) 这是使用choice的,也可以使用randint
# code +=r
index = random.randint(0,len(s)-1)
code +=s[index]
code_set.add(code)
if len(code_set) ==5:
break
print(code_set)