day07 基础数据类型汇总 集合
一、昨日内容回顾
小数据池:
int -5~256
str 特殊字符,*数字20
ascii : 8位 1字节 表示1个字符
unicode 32位 4个字节 表示一个字符
utf- 8 1个英文 8位,1个字节
欧洲 16位 两个字节 表示一个字符
亚洲 24位 三个字节 表示一个字符 如:'中国',用三个字节表示一个字符'中'。
gbk 1个英文 8位,1个字节 表示一个字符 如:Alex ,a就是一个字符
亚洲 16位 两个字节 表示一个字符 如:中国,用两个字节表示'中','中'就是一个字符。
s = 'alex'
b = s.encode('utf-8')
print(b) # b'alex'
二、基础数据类型汇总
1.str
s.isspace() 至少含有一个空格则判断为真。
# 循环删除时,列表或字典会出错 lis = [11,22,33,44,55] for i in range(len(lis)): print(i) # i = 0 i = 1 i = 2 del lis[i] print(lis) # [11,22,33,44,55] [22, 44, 55] [22, 44]
# 取出列表中的奇数 #第一种 lis = lis[::2] print(lis) #第二种 l1 = [] for i in lis: if lis.index(i) % 2 == 0: l1.append(i) lis = l1 print(lis)
删除字典中含有k的健
#删除字典中含有k的健 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)
# 删除列表中的偶数
lis = [11,22,33,44,55] for i in range(len(lis)-1,-1,-1): if i % 2 == 1: print(i) del lis[i] print(lis) print(lis)
# 删除列表中的奇数
lis = [11,22,33,44,55] for i in range(len(lis)-1,-1,-1): if i % 2 == 0: print(i) del lis[i] print(lis) print(lis)
dic = dict.fromkeys([1,2,3],'春哥') # 可迭代生成字典 print(dic) dic = dict.fromkeys([1,2,3],[]) print(dic) # {1: [], 2: [], 3: []} dic[1].append('袁姐') # 报错 print(dic) dic[2].extend('二哥') # 报错 print(dic)
各种数据类型转换成bool值
除下列情况外,其他都为真:0 '' [] () {} set()
2、元组 :
如果元祖里面只有一个元素且不加逗号,那此元素是什么类型,就是什么类型。
tu1 = (1) # int型 tu2 = (1,) # tuple型 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) # {1:3,2:3,3:3} dic[1] = 4 #{1:4,2:3,3:3}
print(dic)
三、集合
可变的数据类型,他里面的元素必须是不可变的数据类型,无序,不重复。
set1 = set({1,2,3})
set2 = {1,2,3,[2,3],{'name':'alex'}} # 错的
print(set1) # {1,2,3]
print(set2) # 报错
1、增
set1 = {'alex','wusir','ritian','egon','barry',}
# add
set1.add('女神') # 随机添加
print(set1)
# update
set1.update('abc') # 随机迭代增加
print(set1)
2、删
#删除 set1.pop() # 随机删除 print(set1.pop()) # 有返回值 print(set1) set1.remove('alex') # 按元素删除 print(set1) #{} set() set1.clear() #清空 print(set1) # set() del set1 #删除整个集合 print(set1)
3、查
# 查 for i in set1: print(i)
4、集合的交集、并集、补集等等
# 交集 set1 = {1,2,3,4,5} set2 = {4,5,6,7,8} set3 = set1 & set2 print(set3) # {4, 5} print(set1.intersection(set2)) # {4, 5} #并集 set1 = {1,2,3,4,5} set2 = {4,5,6,7,8} print(set1 | set2) # {1, 2, 3, 4, 5, 6, 7,8} print(set2.union(set1)) # {1, 2, 3, 4, 5, 6, 7} # 全集减交集 set1 = {1,2,3,4,5} set2 = {4,5,6,7,8} print(set1 ^ set2) # {1, 2, 3, 6, 7, 8} print(set1.symmetric_difference(set2)) # {1, 2, 3, 6, 7, 8} # 各集合独有的 set1 = {1,2,3,4,5} set2 = {4,5,6,7,8} print(set1 - set2) # {1, 2, 3} # #set1独有的 print(set1.difference(set2)) # {1, 2, 3} #子集 set1 = {1,2,3,} set2 = {1,2,3,4,5,6} print(set1 < set2) print(set1.issubset(set2)) # 这两个相同,都是说明set1是set2子集。 # 超集 print(set2 > set1) print(set2.issuperset(set1)) # 这两个相同,都是说明set2是set1超集。
5、去重
#去重 li = [1,2,33,33,2,1,4,5,6,6] set1 = set(li) # 转成集合 # print(set1) li = list(set1) # 转成列表 print(li) s1 = {1,2,3} print(s1,type(s1))
6、把集合变成不可变的,冻住
# 把集合变成不可变的,冻住 s = frozenset('barry') print(s,type(s)) for i in s: print(i) # 随机循环不重复输出
四、深浅copy
# 赋值运算 l1 = [1,2,3] l2 = l1 l1.append('a') print(l1,l2)
1.copy
l1 = [1,2,3] l2 = l1.copy() print(l1,l2) # l1 l2 输出结果一样 print(id(l1),id(l2)) # 内存地址不一样 l2.append('a') # 只有l2增加'a' print(l1,l2) l1 = [1,2,[4,5,6],3] l2 = l1.copy() print(l1,id(l1)) print(l2,id(l2)) # 结果一样,内存地址不同 l1.append('a') # 只有l1增加'a' print(l1,l2) l1[2].append('a') # l1,l2第二个元素都增加'a' print(l1,l2) print(id(l1[2])) print(id(l2[2])) # 内存地址不同
2、import copy
import copy l1 = [1,2,[4,5,6],3] l2 = copy.deepcopy(l1) print(l1,id(l1)) print(l2,id(l2)) # 结果一样,内存地址不同 l1[2].append('a') # 只有l1增加'a' print(l1,l2) l1 = [1,[1],2,3,4] l2 = l1[:] l1[1].append('a') l2 的结果是什么? # l1,l2结果一样,并且都增加了'a
print(l1,id(l1))
print(l2,id(l2)) # 结果一样,内存地址不同
print(l1[1] is l2[1]) # true
li = ['alex','taibai','wusir','egon'] for i in li: print(li.index(i),i) for index,i in enumerate(li,1): print(index,i)

浙公网安备 33010602011771号