Python-day07_2018.7.10(补充知识点,set集合的介绍及相关操作)

今日主要内容:

一.基础数据类型的补充

1.

① li = ["a","b","c"]

    s = "_".join(li)

    print(s)  ====> a_b_c  在li的中间插入"_"

②li = ["a","b","c"]

    li2 = ["1","2"]

    s = li2.join(li)

    print(s)  =====>a,1,2,b,1,2,c  #   将列表2中的"1","2"分别插入到li中

2.在lis,dic等的for循环过程中不可以执行删除元素的操作,因为删除元素会导致整个索引过程其他元素的索引发生改变.

注!!   在执行索引的过程中原来的索引会随着删除而发生改变,从而影响后面的遍历.

方法:  可以将要删除的元素先保存在一个lst中,然后再遍历lst中的每个元素,在原来列表中把lst中的每个元素依次删除. lst = ["周杰伦 ","周润发","周星星","麻花藤","周树人"] #找到姓"周"的人的姓名,并删除.

# del_lis = []
# for el in lst:
#     if el[0] == "周":
#         del_lis.append(el)
# print(del_lis)
# for el in del_lis:
#     lst.remove(el)
# print(lst)
#将lst中姓名里,姓氏为周的人民删除,先把要删除的名字放到del_lis中,让后再遍历del_lis,将元素依次删除就可以了.

二.set集合
set集合里存放,无序,不重复的元素,并且,元素是可以哈希的(int,str,tuple,bool)
①因为set中存放不重复,无序元素,所以,可以使用集合去重
方法:  lst==>转换成set形式==>然后再将set形转换成lst形式

set集合的增删改查

1.增加

s = {"刘嘉玲","关之琳","王祖贤"}

a.

  s.add("郑裕玲")  #如果没有这个元素,则添加,如果有的话就不执行添加操作了

b.

  s.update("麻花藤")   #迭代添加,将"麻""花""藤"分别添加到s集合中.

2.删除

s = {"刘嘉玲","关之琳","王祖贤","张曼玉"}

a.

  item = s.pop() #随机弹出一个

b.

  s.remove("关之琳")  #直接删除元素   !!!!如果元素不存在的话,程序会报错!!!!

c.

  s.clear()   #清空set集合,输出结果剩下空集合===> set()

3.修改

#set存放无序数据,灭有索引,所以没法进行遍历,修改方法如下

① 删除要修改的元素  ②  添加要修改之后的元素    例如: A-->B

s.remove(A)

s.add(B)

4.查询

#set是一额可迭代对象,所以可以进行for循环.

5.常用操作

s1 = {"刘能","赵四","皮长山"}

s2 = {"刘科长","冯科长","皮长山"}

a.交集   print(s1 & s2) ===>皮长山                    #两个集合中全部都出现过的

b.并集   print(s1 | s2) ====>{"刘能","赵四","皮长山","刘科长","冯科长"}    #俩个集合合并之后的集合

c.差集   print(s1 - s2) ====>{"刘能","赵四"}                                             #s1集合,减去两个集合共有的元素

d.反差集 print(s1 ^ s2) ===>{"刘能","赵四","刘科长","冯科长"}               #两个集合中除去交集之后的所有元素

三.深浅拷贝

lst1 = ["刘能","赵四","皮长山"]

lst2 = lst1  #将lst1中元素的对应的内存地址传给lst2.所以,随后,无论对s1,还是s2进行操作,都是对内存中的同一个位置的元素进行操作,

浅拷贝;

 lst1 = ["何炅","杜海涛","周渝民",["麻花藤","马云"]]

lst2 = lst1.copy()  #copy只是对第一层的值进行拷贝,对第二层的(比如["麻花藤","马云"]) 还是传递一个内存地址,没有复制拷贝值,所以如果lst1和lst2对["麻花藤","马云"]进行操作,内存中的列表都会发生改变,所以,lst1,lst2打印出来的原列表还是发生了改变.

深拷贝:

import copy

lst2 = copy.deepcopy(lst1)

  深度拷贝,把元旦内部元素完全进行拷贝复制,不糊出现一个改变另一个的问题.


















猜你喜欢

转载自www.cnblogs.com/kcwxx/p/9289082.html