1、基础数据类型的补充
     join()           "*".join('眉飞色舞')  # 眉*飞*色*舞 ;
                        把传递进去的参数进行迭代,获取到的每个元素和前面的* 进行凭借,得到的是字符串。
 
     split()根据给的参数进行切割,切割的结果是列表
lst = ['你是','','大风','',]
s = '*'.join(lst)
print(s)   # 你是*谁*大风*啊

s1 = '你是*谁*大风*啊'
print(s1.split('*'))  # ['你是', '谁', '大风', '啊']
   把字符串转化成列表,:split()
    把列表转化成字符串:join()
 
2、关于删除
      列表和字典:都不能再循环的时候直接删除。
      
删不干净,原因是:删除一个,元素的索引要重新排列,for循环向后走一个,中间差一个。
lst =['足球','羽毛球','棒球','高尔夫','电子竞技','篮球','台球']

for ball in lst:
lst.pop(0)
print(lst)
# ['电子竞技', '篮球', '台球']

 

lst =['足球','羽毛球','棒球','高尔夫','电子竞技','篮球','台球']

for ball in lst:
lst.remove(ball)
print(lst)
# ['羽毛球', '高尔夫', '篮球']

从最后一位删除 

lst =['足球','羽毛球','棒球','高尔夫','电子竞技','篮球','台球']

for i in range(len(lst)):
lst.pop()
print(lst)
# []

 

最合理的删除方式:
 1、需把要删除的内容记录在新列表中,2、然后循环这个新列表,删除原来的字典或者列表。
# 需求:删除带球的运动项目
lst =['足球', '羽毛球', '棒球', '高尔夫', '电子竞技', '篮球', '台球']

lst1 = [] # 创建新列表
for ball in lst: #循环列表中的每一个元素
if '' in ball:
lst1.append(ball) # 讲带球的运动项目加到新列表中
for el in lst1: # 循环新列表中的每一项
lst.remove(el) # 删除老列表中的带球的运动项目
print(lst)

# ['高尔夫', '电子竞技']
字典
    字典在循环的时候是不能被删除的
dic = {'一班':'张娜','二班':'李冰','三班':'孙梦','四班':'刘欣'}
for k in dic:
dic.pop(k)
print(dic)
# 报错 dictionary changed size during iteration
合理的删除方式:
1、把要删除内容的key保存在一个新列表中
2、循环这个列表,删除字典中的key:value
dic = {'一班': '张娜','二班': '李冰','三班': '孙梦','四班': '刘欣'}
lis =[]
for k in dic:
lis. append(k)
for c in lis:
dic.pop(c)
print(dic)   # {}
集合和字典是一家人
字典:key必须是不可变的,可哈希的,不重复的
集合:元素必须是u可变的,可哈希的,不重复的
 
 
fromkeys()   帮我们创建字典用的(面试的时候常用)
把第一个参数进行迭代,拿到每一项作为key和后面的value组成字典。
 
注1:返回新字典和原来的字典没有关系,老字典不会变更 
dic ={}
d = dic.fromkeys('五班','牧校')
print(dic)  # {}
print(d)   # {'五': '牧校', '班': '牧校'}

注2:如果value是可变的数据类型,各个key共享同一个可变的数据类型,其中一个被改变了,其他的都跟着变。 

dic = {}
d = dic.fromkeys('浩海星辰',[])
d[''].append('')
print(d)
# {'浩': ['梦'], '海': ['梦'], '星': ['梦'], '辰': ['梦']}
dic = {}
d = dic.fromkeys('浩海星辰', [])
d['']= ''
print(d)
# {'浩': [], '海': '梦', '星': [], '辰': []}
 
3、深浅拷贝
 
      1、= 没有创建新对象,只是把内存地址进行了复制
lst = ['春天','夏天','秋天','冬天']
lst1 = lst
print(id(lst))
print(id(lst1))
# 2198492593352
# 2198492593352

  2、浅拷贝  lst.copy() 只拷贝第一层,可以帮我们创建新的对象,和原来的长得一模一样 

lst = ['春天','夏天','秋天','冬天']
lst1 = lst.copy()
print(id(lst))
print(id(lst1))
# 1575045283016
# 1575045309320

 

lst1 = lst.copy()
lst[4].append('晚上')
print(lst)
print(lst1)
# ['春天', '夏天', '秋天', '冬天', ['早上', '中午', '晚上']]
# ['春天', '夏天', '秋天', '冬天', ['早上', '中午', '晚上']]
  3、深拷贝  import  copy
                       copy.deepcopy()  会把对象内部的所有内容都进行拷贝,深度克隆(clone),原型模式
import copy
lst = ['春天','夏天','秋天','冬天',['早上','中午']]
lst1 = copy.deepcopy(lst)
lst[4].append('晚上')
print(lst)
print(lst1)
# ['春天', '夏天', '秋天', '冬天', ['早上', '中午', '晚上']]
# ['春天', '夏天', '秋天', '冬天', ['早上', '中午']]
为什么要深浅拷贝?
 
    提高创建对象的速度
    计算机中最慢的就是创建对象,需要分配内存
    最快的方式就是二进制流的形式进行复制,速度最快
posted on 2018-12-04 21:21  古鲁月  阅读(141)  评论(0编辑  收藏  举报