python 学习笔记 七 数据类型汇总 集合set 深浅copy

一、昨日回顾

小数据池:

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,基础数据类开汇总
'''str int
'''
# str
# s = ' '
# print(s.isspace())

'''
list
'''
# lis = [11,22,33,44,55]
# for i in range(len(lis)):
# print(i)
# del lis[i]
# print(lis)

#
# lis = [::2]
# print(lis)

# 第一种
'''
lis = [11,22,33,44,55]
l1 = []
for i in lis:
if lis.index(i) % 2 == 0:
l1.append(i)
lis = l1
print(lis)
'''
# 第二种
'''
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)
'''

# 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[1].extend('二哥')
# print(dic)

# 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)

'''
'''
dic = {'k1':'v1','k2':'v2','a3':'v3'}
l = []
for i in dic:
if 'k' in i:
l.append(i)
for i in l:
del dic[i]
print(dic)
'''

# 转化成bool值
# 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)

3,集合set
  
'''
集合:可变的数据类型,他里面的元素是不可变的数据类型,无序的,不重复的 {} 表示 set()
'''
# 创建方式
# set1 = set({1,2,3})
# # set2 = {1,2,3,[2,3],{'name':'alex'}} #错的
# print(set1)
# print(set2)

# 增 add update
# set1 = {'alex','wusir','ritian','egon','barry',}
# set1.add('女神')
# print(set1)
#
# set1.update('abc') #可迭代的
# print(set1)

# 删除
# set1.pop() # 随机删除
# print(set1.pop()) # 有返回值
# print(set1)

# set1.remove('alex') #按元素删除,没有这个元素会报错
# print(set1)

# 清空 set()
# set1.clear()
# print(set1)

# 查
# for i in set1:
# print(i)

# 交集 (& 或者 intersection)
# 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}

# 并集 (| 或者 union)
# set1 = {1,2,3,4,5,}
# set2 = {4,5,6,7,8,}
# print(set1 | set2) # {1, 2, 3, 4, 5, 6, 7, 8}
# print(set1.union(set2)) # {1, 2, 3, 4, 5, 6, 7, 8}

# 差集 (- 或者 difference)
# set1 = {1,2,3,4,5,}
# set2 = {4,5,6,7,8,}
# print(set1 - set2) # {1, 2, 3}
# print(set2 - set1) # {8, 6, 7}
# print(set1.difference(set2)) # {1, 2, 3}

# 反交集 (^ 或者 symmetric_difference)
# 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} # 这两个相同,都是说明set2是set1超集。
# set2 = {1,2,3,4,5,6}
# print(set1 < set2) # True
# print(set1.issubset(set2)) # 这两个相同,都是说明set1是set2子集
#
# print(set2 > set1)
# print(set2.issuperset(set1))

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

# 去重
# li = [1,2,33,33,2,1,4,5,6,6]
# set1 = set(li)
# print(set1)
# li = list(set1)
# print(li)

# for循环:用户按照顺序循环可迭代对象的内容。
# msg = '老男孩python是全国范围内最好的python培训机构'
# for item in msg:
# print(item)

# li = ['alex','银角','女神','egon','太白']
# for i in li:
# print(i)
#
# dic = {'name':'太白','age':18,'sex':'man'}
# for k,v in dic.items():
# print(k,v)
'''
enumerate:枚举,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),
enumerate将其组成一个索引序列,利用它可以同时获得索引和值。
'''
# li = ['alex','银角','女神','egon','太白']
# for i in enumerate(li):
# print(i)
# for index,name in enumerate(li,1):
# print('{}\t\t{}'.format(index,name))
# print(index,name)

l1 = ['wusir', 'alex', '太白', '女神', 12, 666]
for i in range(len(l1)):
print(i)
4,深浅copy
# 赋值运算
# l1 = [1,2,3]
# l2 = l1
# l1.append('a')
# print(l1,l2)
# 对于赋值运算来说,l1与l2指向的是同一个内存地址,所以他们是完全一样的

# copy
# l1 = [1,2,3]
# l2 = l1.copy()
# print(l1,l2) # [1, 2, 3] [1, 2, 3]
# print(id(l1),id(l2)) # 2189738597960 2189738595912
# l2.append('a')
# print(l1,l2) # [1, 2, 3] [1, 2, 3, 'a']

# l1 = [1,2,[4,5,6],3]
# l2 = l1.copy()
# print(l1,id(l1))
# print(l2,id(l2))
# l1[2].append('a')
# print(l1,l2)
# print(id(l1[2]))
# print(id(l2[2]))
# 对于浅copy来说,只是在内存中重新创建了开辟了一个空间存放一个新列表,
# 但是新列表中的元素与原列表中的元素是公用的
'''
import copy
l1 = [1,2,[4,5,6],3]
l2 = copy.deepcopy(l1)
print(l1,id(l1))
print(l2,id(l2))
l2[2].append('a')
print(l1,l2)
'''

l1 = [1,[1],2,3,4]
l2 = l1[:]
l1[1].append('a')
# l2的结果是什么?

print(l1,id(l1))
print(l2,id(l2))
print(l1[1] is l2[1])

# 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 @ 2019-07-16 13:35  休由  阅读(172)  评论(0编辑  收藏  举报