python学习day7

昨日内容回顾

小数据池:
int  -5~256
str  特殊字符,*数字20


ascii :  8位 1字节  表示1个字符
unicode  32位  4个字节  表示一个字符
utf- 8  1个英文 8位,1个字节
        欧洲 16位   两个字节  表示一个字符
        亚洲 24位   三个字节  表示一个字符

gbk    1个英文 8位,1个字节
        亚洲 16位   两个字节  表示一个字符

s = 'alex'
b = s.encode('utf-8')
print(b)  # b'alex'

1,基础数据类型汇总补充
str
int
list
    在循环一个列表时,最好不要删除列表中的元素,这样会使索引发生改变,从而报错。
bool
dict
    1,fromkeys()

tuple
2,集合set
3,深浅copy

今日代码练习

# 列表值偶数位的两种方式
# 第一种
lis = lis[::2]
print(lis)
# 第二种
l1 = []
for i in lis:
    if lis.index(i) % 2 == 0:
        l1.append(i)
lis = l1
print(lis)

# 快速创建字典
""" Returns a new dict with keys from iterable and values equal to value. """
dic = dict.fromkeys('alex', '春哥')
print(dic)
dic = dict.fromkeys([1, 2, 3], [])
print(dic)  # {1: [], 2: [], 3: []}
dic[1].append('袁姐')
print(dic)
dic[2].extend('二哥')
print(dic)

# 浅copy
l1 = []
l2 = l1
l3 = l1
l3.append('a')
print(l1, l2, l3)

# 删除字典中键值对的两种方法
dic = {'k1': 'v1', 'k2': 'v2', 'a3': 'v3'}
dic1 = {}

for i in dic:
    if 'k' not in i:
        dic1.setdefault(i, dic[i])
dic = dic1
print(dic)

l = []
for i in dic:
    if 'k' in i:
        l.append(i)
for i in l:
    del dic[i]
print(dic)

# 转化成bool值为False
# 0
# ''[]()
# {}
# set()

# 元祖
# 如果元祖里面只有一个元素且不加逗号那此元素是什么类型,就是什么类型。
tu1 = (1)
tu2 = (1,)
print(tu1, type(tu1))
print(tu2, type(tu2))
tu1 = ([1])
tu2 = ([1],)
print(tu1, type(tu1))
print(tu2, type(tu2))
dic = dict.fromkeys([1, 2, 3], 3)
dic[1] = 4
print(dic)

集合代码练习

'''
集合:可变的数据类型,他里面的元素必须是不可变的数据类型,无序,不重复。
     {}
'''
#集合的创建
# set1 = set({1, 2, 'barry'})
# set2 = {1, 2, 'barry'}
# print(set1, set2)  # {1, 2, 'barry'} {1, 2, 'barry'}

#集合的增,删
#增 add() update()迭代的增加
set1 = {'alex','wusir','wusir','taibai','yuanhao'}
# set1.add('peiqi')
# print(set1)
# set1.update('中国')
# print(set1)
#删除 pop()随机删除有返回值, remove()按元素删除,clear()
# print(set1.pop())
# print(set1)
# set1.remove('alex')
# print(set1)
# set1.clear()
# print(set1) #set()
#查询
# for i in set1:
#     print(i)

#集合的方法

#求交集
# a = {1,2,3,4,5}
# b = {4,5,6,7,8}
# print(a & b)
# print(a.intersection(b))

#求反交集
# print(a ^ b)
# print(a.symmetric_difference(b))

#求并集
# print(a | b)
# print(a.union(b))

#求差集,就是谁独有的
# print(a - b)
# print(a.difference(b))

#求子集与超集
# a = {1,2,3}
# b = {1,2,3,4,5,6}
# print(a <b)
# print(a.issubset(b))  # 这两个相同,都是说明set1是set2子集。
#
# print(b > a)
# print(b.issuperset(a))  # 这两个相同,都是说明set2是set1超集。

#让集合变成不可变类型,可查询
# s = frozenset('barry')
# print(s,type(s))  # frozenset({'a', 'y', 'b', 'r'}) <class 'frozenset'>
# for i in s:
#     print(i)

深浅copy

#深浅copy
#赋值运算
# l1=[1,2,3,['alex','barry']]
# l2=l1
# l1[0]=111
# print(l1,l2)
# l1[3][0]='wusir'
# print(l1,l2) #对于赋值运算来说,l1与l2指向的是同一个内存地址,所以它们是完全一样的

#浅拷贝copy()
# l1=[1,2,3,['alex','barry']]
# l2=l1.copy()
# print(l1,id(l1))
# print(l2,id(l2))
# l1[0]=111
# print(l1,id(l1))
# print(l2,id(l2))
#
# l1[3][0]='wusir'
# print(l1,id(l1[3]))
# print(l2,id(l2[3]))#对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,
#  所以,对于第二层以及更深的层数来说,保持一致性

#深copy
# import copy
# l1= [1,2,3,['alex','barry']]
# l2 = copy.deepcopy(l1)
# print(l1,id(l1))
# print(l2,id(l2))
# l1[0]=111
# print(l1,id(l1))
# print(l2,id(l2))
# 
# l1[3][0]='wusir'
# print(l1,id(l1[3]))
# print(l2,id(l2[3]))#对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变

猜你喜欢

转载自www.cnblogs.com/wujunjie-sir/p/9178999.html