07_python_集合深浅拷贝

一、join

 li = ["李嘉诚", "麻花藤", "林海峰", "刘嘉玲"]
s = "_".join(li) # 循环遍历列表,把列表中的每一项用''_''拼接
print(s)
结果:
李嘉诚_麻花藤_林海峰_刘嘉玲
li = "花闺"
s = "_".join(li)
print(s)
结果:
花_闺
  1、join()方法是把列表转换成字符串,join就是迭代。
    字符串  =>  列表        s.split()             列表  =>  字符串          '_' join( li )
  2、删除列表中的元素,删除字典也同样方法
    循环删除列表中的元素会出现删不干净的问题
 li = [11, 22, 33, 44]
for e in li: # for 循环内部存在一个变量来记录当前被访问循环的位置索引,每次删除都会涉及元素移动
li.remove(e)
print(li)
结果:
[22, 44]

  由于删除元素会导致元素的索引改变, 所以容易出现问题. 尽量不要再循环中直接去删 除元素. 可以把要删除的元素添加到另⼀个集合中然后再批量删除.

 li = [11, 22, 33, 44]
li_new = []
for el in li:
li_new.append(el)
for i in li_new:
li.remove(i)
print(li)

  字典删除元素

 dic = {'k1': 'alex', 'k2': 'wusir', 's1': '⾦⽼板'}
dic_del_list = []
# 删除key中带有'k'的元素
for k in dic:
if 'k' in k:
dic_del_list.append(k)
for el in dic_del_list:
del dic[el]
print(dic)

二、fromkeys()

 dic = dict.fromkeys(["jay", "JJ"], ["周杰伦", "麻花藤"])
print(dic)
结果:
{'jay': ['周杰伦', '麻花藤'], 'JJ': ['周杰伦', '麻花藤']}

  fromkeys()不是改变字典,它是一个类方法,作用是创建新字典前⾯列表中的每⼀项都会作为key, 后⾯列表中的内容作为value. ⽣成新dict,fromkeys正常来说应该是类名访问的

 d = dict.fromkeys(['a','b'],[])
d['a'].append('alex')
结果:
{‘a’:['alex'], 'b':['alex']}
# 所有key用的是同一个列表,改变其中一个,另一个也跟着改变

三、集合 set()

  1、set集合是python的⼀个基本数据类型. ⼀般不是很常⽤. set中的元素是不重复的.⽆序的.⾥ ⾯的元素必须是可hash的(int, str, tuple,bool), 我们可以这样来记. set就是dict类型的数据但 是不保存value, 只保存key. set也⽤{}表⽰
  注意: set集合中的元素必须是可hash的, 但是set本⾝是不可hash得. set是可变的. 
  2、字典中key不会重复。集合中存的如字典中key类似
    s = set( ) # 空集合
    s = {1,2,3} # set集合
  3、集合的特点:不重复,元素不可变(可hash)
  4、去重
 li = [1,2,3,1,1,1,1,2,2,2,4,4,4,5,5,5,5]
se = set(li)
li_new = list(se)
print(li_new)

四、深浅拷贝

  1、定义
 
  (1) 赋值没有创建新对象。多个变量共享同一个对象
 
07_python_集合深浅拷贝
07_python_集合深浅拷贝
07_python_集合深浅拷贝
  (2)浅拷贝。 会创建新对象。 新的对象中里面的内容不会被拷贝
 
07_python_集合深浅拷贝
 
  (3)深拷贝。 创建一个一摸一样的完全新的对象。 这个对象延伸出来的内容也会跟着复制一份
 
07_python_集合深浅拷贝
上一篇:深入浅出百度地图API开发系列(1):前言


下一篇:html5:地理信息 LBS基于地理的服务和百度地图API的使用