1、补充

  1.1  join()字符串拼接.

 strs = "阿妹哦你是我的丫个哩个啷"
nw_strs = "_".join(strs)
print(nw_strs) # 阿_妹_哦_你_是_我_的_丫_个_哩_个_啷 lst = ["a","b","c","d"]
nw_lst = "*".join(lst)
print(nw_lst) # a*b*c*d

join()拼接

  1.2  不用clear()清空列表或字典 ----> 把要删除的元素放在新列表里,然后批量删除.

    list: 在循环遍历时每次删除都会导致列表内部元素的位置前移发生变化.

   dict: 在循环遍历时不允许变更字典的长度(即不能增加或删除键值对).

 li = [11, 22, 33, 44, 55]
while li:
li.pop()
print(li) # 只要li不为空就一直删除最后一个,直到为空 del_li = []
for i in li:
del_li.append(i)
for j in del_li: # 把要删除的元素放在另一个列表里,然后循环遍历新列表,删除旧列表
li.remove(j)
print(del_li)

清空列表

  1.3  fromkeys(参1,参2)

    创建新字典. 参1 为可迭代对象, 把参1 中的每一个元素作为key, 把参2 作为value, 生成新字典.

    fromkeys()是一个静态方法,只能通过类名或字典对象来调用, 返回的是一个新字典, 和原来的字典没有关系.

 d = dict.fromkeys("ab", [1,2,3])
print(d) # {'a': [1, 2, 3], 'b': [1, 2, 3]} dic = {"a":1}
d = dic.fromkeys("ab", [1,2,3])
print(d) # {'a': [1, 2, 3], 'b': [1, 2, 3]}

fromkeys()方法

2、set集合

  2.1  集合本身是不可哈希(可变)的, 但是里面的元素是不可变的, 而且是不能重复的.

    集合最大的作用就是去重.

 lst = [1,2,5,3,2,5,4,1]
print(list(set(lst))) # [1, 2, 3, 4, 5]

set去重

  2.2  增删改查

    增   add(),update()

 sets = {"王祖贤","张曼玉","关之琳"}
sets.add("刘嘉玲")
print(sets) #{'关之琳', '刘嘉玲', '张曼玉', '王祖贤'} sets.update(["张敏","刘嘉玲"])
print(sets) # {'刘嘉玲', '关之琳', '王祖贤', '张敏', '张曼玉'}

    删  remove(指定内容),    pop()不能指定

    改  集合是无序的,没有办法通过索引进行修改,只能先删除后添加.

    查  for循环遍历.

  2.3  交集(&), 并集(|), 差集(-), 反交集(^)

    s1 < or > s2    s1是s2的子集吗? ---->True or False

 s1 = {1,2,5,6,3,4,7}
s2 = {2,6,4,8,12,29}
print(s1 & s2) # {2, 4, 6}
print(s1 | s2) # {1, 2, 3, 4, 5, 6, 7, 8, 12, 29}
print(s1 - s2) # {1, 3, 5, 7} s1中单独存在的
print(s1 ^ s2) # {1, 3, 5, 7, 8, 12, 29} 两个集合中单独存在的数据

3、深浅拷贝

  = 赋值

    lst2 = lst1    将lst1的内存地址 赋值给lst2, 所以lst1 增删改,lst2 也发生变化

 lst1 = ["大魔王","二魔王","大老三","刘老四"]
lst2 = lst1 # 将lst1的内存地址赋值给lst2,所以lst1增删改,lst2也发生变化
lst1.append("王老五")
print(lst1)
print(lst2)

  浅拷贝  [:] 和 copy()----> 省内存.

    只复制第一层的内存地址.

 lst1 = ["大魔王","二魔王","大老三","刘老四"]
lst2 = lst1[:] # 只复制第一层的内存地址
lst1.append("王老五")
print(lst1) # ['大魔王', '二魔王', '大老三', '刘老四', '王老五']
print(lst2) # ['大魔王', '二魔王', '大老三', '刘老四'] lst1 = ["大魔王","二魔王",["大","老","三"],"刘老四"]
lst2 = lst1.copy() # 只复制第一层的内存地址,lst1和lst2引用的都是["大","老","三"]的内存地址,
# 不是里面元素,所以在["大","老","三"]发生增删改时,lst1和lst2也发生
变化.
lst1[2].append("不老")
print(lst1) # ['大魔王', '二魔王', ['大', '老', '三', '不老'], '刘老四']
print(lst2) # ['大魔王', '二魔王', ['大', '老', '三', '不老'], '刘老四']

浅拷贝

  深拷贝  deepcopy()  ---->占内存

    复制一个对象,里面有lst1的所有的元素, lst1的增删改和lst2 再无任何瓜葛.

 import copy
lst1 = ["大魔王","二魔王",["大","老","三"],"刘老四"]
lst2 = copy.deepcopy(lst1) # 深拷贝,把所有元素都copy过来,和lst2完全脱离,lst1的增删改和lst2无任何关系.
lst1[2].append("不老")
print(lst1) # ['大魔王', '二魔王', ['大', '老', '三', '不老'], '刘老四']
print(lst2) # ['大魔王', '二魔王', ['大', '老', '三'], '刘老四']

深拷贝

  

python摸爬滚打之day07----基本数据类型补充, 集合, 深浅拷贝的更多相关文章

  1. Day7--Python--基础数据类型补充,集合,深浅拷贝

    一.基础数据类型补充 1.join() 把列表中的每一项(必须是字符串)用字符串拼接 与split()相反 lst = ["汪峰", "吴君如", " ...

  2. Python基础知识(六)------小数据池,集合,深浅拷贝

    Python基础知识(六)------小数据池,集合,深浅拷贝 一丶小数据池 什么是小数据池: ​ 小数据池就是python中一种提高效率的方式,固定数据类型使用同一个内存地址 代码块 : ​ 一个文 ...

  3. python基础(9):基本数据类型四(set集合)、基础数据类型补充、深浅拷贝

    1. 基础数据类型补充 li = ["李嘉诚", "麻花藤", "⻩海峰", "刘嘉玲"] s = "_&qu ...

  4. Python基础数据类型补充及深浅拷贝

    本节主要内容:1. 基础数据类型补充2. set集合3. 深浅拷贝主要内容:一. 基础数据类型补充首先关于int和str在之前的学习中已经讲了80%以上了. 所以剩下的自己看一看就可以了.我们补充给一 ...

  5. is,数据类型补充,set,深浅拷贝

    十二.基础数据类型补充: 1.join 可以把列表变成字符串. s = ‘abc’ s1 = s.join(‘非常可乐’) print(s1)  #非abc常abc可abc乐abc s = " ...

  6. Python学习---列表/元组/字典/字符串/set集合/深浅拷贝1207【all】

    1.列表 2.元组 3.字典 4.字符串 5.set集合 6.深浅拷贝

  7. python学习打卡 day07 set集合,深浅拷贝以及部分知识点补充

    本节的主要内容: 基础数据类型补充 set集合 深浅拷贝 主要内容: 一.基础数据类型补充 字符串: li = ["李嘉诚", "麻花藤", "⻩海峰 ...

  8. 基本数据类型补充,set集合,深浅拷贝等

    1.join:将字符串,列表,用指定的字符连接,也可以用空去连接,这样就可以把列表变成str ll = ["wang","jian","wei&quo ...

  9. 6.Python初窥门径(小数据池,集合,深浅拷贝)

    Python(小数据池,集合,深浅拷贝) 一.小数据池 什么是小数据池 小数据池就是python中一种提高效率的方式,固定数据类型,使用同一个内存地址 小数据池 is和==的区别 == 判断等号俩边的 ...

随机推荐

  1. [开发笔记]-Jqplot图表初体验

    文章内容为初次使用Jqplot图表插件的测试代码,仅供参考. <html xmlns="http://www.w3.org/1999/xhtml"> <head& ...

  2. InstrumentDriver,对iOS自动化测试说 Yes!

    InstrumentDriver 是 Mobile自动化小组最近实现的基于 instrument,针对 iOS 的自动化测试框架,目前支持 java 语言编写测试用例. 研究过iOS自动化测试的同学肯 ...

  3. BitTorrent Sync 基于BT的文件同步

    BitTorrent Sync 神奇的文件同步软件,无需服务器让多台电脑间无限制互相同步!   BitTorrent Labs 推出的实验性项目,可以在多台电脑间进行点对点自动分享/同步文件,由于没有 ...

  4. Fedora Server 21 安装 搜狗拼音输入法

    最新文章:Virson’s Blog 借鉴文章:博客园-怒杀神殿    ChinaUnix-firo 百度贴吧-fedora吧 方法一:解压deb安装包方式安装: 如果本机已安装ibus,需要先卸载, ...

  5. Java中的引用类型Scanner类和随机类型Random

    Scanner类 我们要学的Scanner类是属于引用数据类型,我们先了解下引用数据类型.   引用数据类型的使用 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式. ...

  6. Jmeter-安装配置

    一.安装JDK 1 [步骤一]安装jdk 1.下载jdk,到官网下载jdk,地址:http://www.oracle.com/technetwork/java/javase/downloads/ind ...

  7. 获取linux服务进程号

    ps -ef | grep "服务名" | grep -v "grep" | awk '{print $2}' # ps -ef|grep "被查询的 ...

  8. Possible causes are invalid address of the remote server or browser start-up failure.

    appium 脚本运行不起来 Caused by: org.apache.http.conn.HttpHostConnectException: Connect to 127.0.0.1:4723 [ ...

  9. 《转载》python爬虫实践之模拟登录

    有些网站设置了权限,只有在登录了之后才能爬取网站的内容,如何模拟登录,目前的方法主要是利用浏览器cookie模拟登录.   浏览器访问服务器的过程   在用户访问网页时,不论是通过URL输入域名或IP ...

  10. 秒杀应用的MySQL数据库优化

    关于秒杀 随着双11活动的不断发展,小米饥饿营销模式的兴起,“秒杀”已经成为一个热点词汇.在一些活动中,热销商品会以惊人的速度售罄,比如最近本人在抢购美图M4手机,12点开卖,1分钟之内就被售罄. 秒 ...