python数据类型与功能三 | 基础六

· Special

集合

可用于爬虫(保证链接唯一)

定义新集合

#集合
v1 = set()

#列表
v2 = list()

#元组
v3 = tuple()

#字典
v4 = dict()

独有功能

公共功能

类型转换

存储原理

查询速度

列表元组循环慢
#速度慢,遍历
for i in list:
        pass

for i in tuple:
        pass
集合速度快(排除hash碰撞)
for i in set:
        pass

#原理,取余判断位置是否存在
>>> hash('a')
#5694973841062399683

hash('a')%7 #6
if hash_list[6] == 5694973841062399683
        pass

补充

元组练习

#在set a就加入list 不在就add
a = {'wupeiqi','alex','king'}
b = []

while True:
    user_input = input('请输入你想添加的(q/Q退出): ').strip()
    if user_input.upper() == 'Q':
        break
    if user_input in a:
        b.append(user_input)
        print(f'{user_input}在里面')
    else:
        a.add(user_input)
        print(f'{user_input}不在里面')
print(a,b)

#判断输入的是否在列表,在就提示,否则添加,
is_login_user = set()

while True:
    name = input('输入你的用户名,(q/Q退出)').strip()
    if name.upper() == 'Q':
        break
    pwd = input('输入你的密码').strip()
    data = (name, pwd)
    if data not in is_login_user:
        is_login_user.add(data)
    else:
        print('此用户已录入')

print(is_login_user)
列表去重可用set
a = [1,2,3,1,2,3,114]
data = set(a)
data = list(data) # [1,2,3,114]

none

特性

字典

定义

v1 = {}
v1 = dict()
info  = {
    'a':'b',
    '1':'2',
    '3':'4',
    'e':'f'
}
    

独有功能

优先处理简单逻辑,在判断复杂逻辑
#判断输入是否在键值对里
info  = {
    'a':'b',
    '1':'2',
    '3':'4',
    'e':'f'
}

#获取name和pwd
name = input('请输入name: ').strip()
password = input('请输入密码: ').strip()

#data输出为none不在键值对,True再对比值
data = info.get(name)

# # if data==None:
# #     print('你输入的值不存在')
# # else:
# #     if password==data:
# #         print('登录成功')
# #     else:
# #         print('密码错误')

if not data:
    print('你输入的值不存在')
else:
    if password==data:
        print('登录成功')
    else:
        print('密码错误')
(python2时,获取容器为列表,目的是优化缓存,减少内存占用)

公共功能

转换

其他

浮点

二进制浮点数计算

小数部分x2,如果大于1减1 x2 小于1继续x2,等值等于1结束

取整数部分进行拼接就是二进制(01001010)

默认会进行无限循环

a = 0.29
value_list = []
i = 0
while i<100:
    if a == 1:
        break
    if not a>1:
        a*=2
    else:
        a-=1
        a*=2
    value_list.append(round(a,3))
    i+=1

print(value_list)
#[0.58, 1.16, 0.32, 0.64, 1.28, 0.56, 1.12, 0.24, 0.48, 0.96, 1.92, 1.84, 1.68, 1.36, 0.72, 1.44, 0.88, 1.76, 1.52, 1.04, 0.08, 0.16, 0.32, 0.64, 1.28, 0.56, 1.12, 0.24, 0.48, 0.96, 1.92, 1.84, 1.68, 1.36, 0.72, 1.44, 0.88, 1.76, 1.52, 1.04, 0.08, 0.16, 0.32, 0.64, 1.279, 0.559, 1.117, 0.234, 0.469, 0.938, 1.875, 1.75, 1.5, 1.0]
#在0.32与0.32之间循环
转换科学计数法
[0.58, 1.16, 0.32, 0.64, 1.28, 0.56, 1.12, 0.24, 0.48, 0.96, 1.92, 1.84, 1.68, 1.36, 0.72, 1.44, 0.88, 1.76, 1.52, 1.04, 0.08, 0.16, 0.32, 0.64, 1.28, 0.56, 1.12, 0.24, 0.48, 0.96, 1.92, 1.84, 1.68, 1.36, 0.72, 1.44, 0.88, 1.76, 1.52, 1.04, 0.08, 0.16, 0.32, 0.64, 1.279, 0.559, 1.117, 0.234, 0.469, 0.938, 1.875, 1.75, 1.5, 1.0]

#将列表取整拼接成字符串
str_zs = []
for i in value_list:
    str_zs.append(str(int(i)))

data = ''.join(str_zs)
print(data)
#010010100011110101110000101000111101011100001010001111
#1.0010100011110101110000101000111101011100001010001111*2**-2

代码原则

windows · python


评论