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)

 






posted @ 2018-12-16 15:14  pumpkin_J  阅读(91)  评论(0)    收藏  举报