一.基础数据类型的补充

1.str中的join算法,将列表转换成字符串,并用'_'(或其他)

 li=['李嘉诚','马化腾','刘嘉玲','黄海峰',]
s='_'.join(li)
print(s) #李嘉诚_马化腾_刘嘉玲_黄海峰

2.循环删除列表中的每个元素

li=['李嘉诚','马化腾','刘嘉玲','黄海峰',]
for el in li:
li.remove(el)
print(li) #['马化腾', '黄海峰']

原因分析:for循环在运行过程中会有一个指针记录当前循环的元素是哪一个.

方法一:

 li=['李嘉诚','马化腾','刘嘉玲','黄海峰',]
for i in range(0,len(li)):
li.pop() #括号中什么也不写,默认删除最后一个
print(li) #[]

方法二:删除元素会导致列表中元素的索引发生改变,所以容易出现问题.

 li=['李嘉诚','马化腾','刘嘉玲','黄海峰',]
del_li=[]
for el in li:
del_li.append(el) #用另一个列表来记录我要删除的内容
for el in del_li: #循环另一个列表
li.remove(el) #把原列表中的每一个元素对应删除
print(li) #[]

字典也是如此:

 dic = {"提莫":"冯提莫", "发姐":"陈一发儿", "55开":"卢本伟"}
lis=[]
for el in dic:
lis.append(el)
for el in lis:
dic.pop(el)
print(dic) #{}

3.dict中的元素在迭代的过程中是不允许进行删除的,要想删除,就要把想删除的元素暂时保存在一个list中,在循环list删除.

 dic = {"提莫":"冯提莫", "发姐":"陈一发儿", "55开":"卢本伟"}
lis=[]
for el in dic:
if el.startswith('提'):
lis.append(el)
for el in lis:
dic.pop(el)
print(dic) #{'发姐': '陈一发儿', '55开': '卢本伟'}

4.dict中的dict.fromkeys(),可以帮助我们通过list创建一个dict

 a','b'],['c','d'])
print(dic) #{'a': ['c', 'd'], 'b': ['c', 'd']} 前面的迭代被作为字典的键,后面的被作为字典的value

5.字符串和列表的相互转换

把字符串转换成列表:split()

把列表转换成字符串:join()

二.set集合

特点:set中的元素是无序的,不重复的,里面的元素必须是可hash的(int,str,tuple,bool),set就是字典类型的数据,但是不保存value.set用{}表示.

注意:set集合中的元素必须是可hash的,但是set本身是不可hash的.

不可重复,无序(一般用来去重):

 s={'','',''}
print(s) #第一次运行{'1', '2'} 第二次运行{'2', '1'}

1.增

(1) s.add():

 s={'刘嘉玲','张曼玉','王祖贤'}
s.add('美丽的我')
s.add('王祖贤') #重复的内容不会添加到set中
print(s) #{'刘嘉玲', '美丽的我', '王祖贤', '张曼玉'}

(2) s.update():

 s={'刘嘉玲','张曼玉','王祖贤'}
s.update('马化腾') #迭代添加
print(s) #{'化', '刘嘉玲', '张曼玉', '腾', '王祖贤', '马'}

2.删

(1)  s.pop()

 s={'刘嘉玲','张曼玉','王祖贤'}
# a=s.pop() #随机删除一个
# print(a)
# print(s)

(2) s.remove()

 s={'刘嘉玲','张曼玉','王祖贤'}
# s.remove('刘嘉玲') #直接删除指定元素,如果不存在会报错
# print(s)

(3) s.clear()

 s={'刘嘉玲','张曼玉','王祖贤'}
s.clear()
print(s) #set()

3.改

set中的数据没有索引,所以没有办法定位一个元素,因此没有办法进行直接修改.

我们可以采用先删除后添加的方式进行修改

#把刘嘉玲改成赵本山
s={'刘嘉玲','张曼玉','王祖贤'}
s.remove('刘嘉玲') #删除
s.add('赵本山') #添加
print(s) #{'赵本山', '张曼玉', '王祖贤'}

4.查

用for循环进行查看

 s={'刘嘉玲','张曼玉','王祖贤'}
for el in s: #王祖贤
print(el) #刘嘉玲
#张曼玉

5.常用操作

 s1={'刘能','赵四','皮长山'}
s2={'刘科长','冯科长','皮长山'}
print(s1 & s2) #交集
print(s1.intersection(s2)) #交集 print(s1 | s2) #并集
print(s1.union(s2)) #并集 print(s1 - s2) #差集
print(s1.difference(s2)) #差集 print(s1 ^ s2) #反差集
print(s1.symmetric_difference(s2)) #反差集 print(s1 < s2) #子集
print(s1.issubset(s2)) #子集 print(s1 > s2) #超集
print(s1.issuperset(s2)) #超集

三.深浅拷贝

1. 赋值. 没有创建新对象. 公用同一个对象
2. 浅拷贝. 拷贝第一层内容. [:]或copy()
 lst1=['何炅','杜海涛','谢娜',['李维嘉']]
lst2=lst1.copy()
  print(lst1)           #2571062967176
print(lst2) #2571062967176
 print(id(lst1[3])) #  print(id(lst2[3])) #
3. 深拷贝. 拷贝所有内容. 包括内部的所有.
 import copy
lst1=['何炅','杜海涛','谢娜',['李维嘉']]
lst2=copy.deepcopy(lst1)
print(lst1)
print(lst2)
print(id(lst1),id(lst2)) #3135828524616 3135828628360

 

python中的set集合和深浅拷贝的更多相关文章

  1. 2018.8.3 python中的set集合及深浅拷贝

    一.字符串和列表的相互转化 之前写到想把xx类型的数据转化成yy类型的数据,直接yy(xx)就可以了,但是字符串和列表的转化比较特殊,相互之间的转化要通过join()和split()来实现. 例如: ...

  2. 关于python中一切皆对象和深浅拷贝

  3. Python中的变量、引用、拷贝和作用域

    在Python中,变量是没有类型的,这和以往看到的大部分编辑语言都不一样.在使用变量的时候,不需要提前声明,只需要给这个变量赋值即可.但是,当用变量的时候,必须要给这个变量赋值:如果只写一个变量,而没 ...

  4. Python中字典和集合

    Python中字典和集合 映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元 ...

  5. python之set集合、深浅拷贝

    一.基本数据类型补充 1,关于int和str在之前的学习中已经介绍了80%以上了,现在再补充一个字符串的基本操作: li = ['李嘉诚','何炅','海峰','刘嘉玲'] s = "_&q ...

  6. python之set集合及深浅拷贝

    一.知识点补充 1.1字符串的基本操作 li =["李李嘉诚", "麻花藤", "⻩黄海海峰", "刘嘉玲"] s = ...

  7. 从入门到自闭之Python集合,深浅拷贝(大坑)

    小数据池 int: -5~256 str: 字母,数字长度任意符合驻留机制 字符串进行乘法时总长度不能超过20 特殊符号进行乘法时只能乘以0 代码块: 一个py文件,一个函数,一个模块,终端中的每一行 ...

  8. python day 07-数据类型补充,集合,深浅拷贝

    一.基础数据类型补充 1.列表转字符串 a='A'.join(['c','c','s']) print(a) 2.循环删除列表中的每⼀一个元素 lst=['asdf','dftgst','zsdrfs ...

  9. python随笔 join 字典,列表的清空 set集合 以及深浅拷贝(重点..难点)

    一,字符串和列表的转换 1.str中的 join 方法: 把列表转换成字符串 # 将列表转换成字符串. 每个元素之间用_连接 s = '**'.join(['李启政',' 郑强' , '孙福来']) ...

随机推荐

  1. so文件成品评论【整理】

    这是我的 @布加迪20 AZ在一篇文章中写道:<汉化so文件的心得>中的技术附件做的简洁性整理.原来的看起来不是非常方便.一起分享学习.. 正文 SO文件汉化心得 --By布加迪20   ...

  2. Android 开发新方向 Android Wear ——概述

    2014 谷歌 I/O大会正式公布的Android Wear 开发理念,从而能够更系统的提供开发人员使用Android接口开发便携式可穿戴设备,以智能手表为例,通过Android提供的接口,能够方便的 ...

  3. 在.net core 的webapi项目中将对象序列化成json

    问题:vs2017 15.7.6创建一个基于.net core 2.1的webapi项目,默认生成的控制器继承自ControllerBase类 在此情况下无法使用Json()方法 将一个对象转成jso ...

  4. DDD实战12 值对象不创建表,而是直接作为实体中的字段

    这里的值对象如下风格: namespace Order.Domain.PocoModels { //订单地址 //虽然是值对象 但是不继承ValueObject //因为继承ValueObject会有 ...

  5. C# ini

    C# ini文件操作[源码下载] 介绍C#如何对ini文件进行读写操作,C#可以通过调用[kernel32.dll]文件中的 WritePrivateProfileString()和GetPrivat ...

  6. 关于JavaScript中事件的一些重要说明

    1,JavaScript异步回调 <script language="javascript"> //注册回调函数loaded到处理函数window.onload上 wi ...

  7. Myeclipse2014 激活 (包括方法和工具)

    课程要求Myeclipse做各种各样的实验,对,当各种插头井.突然Myeclipse提示:使用过期,你可知道按那些个插件收了多少挫折么,怎能刚安好就用不了.可是又不想buy,所以就上网找破解咯,当中发 ...

  8. XF内容视图和框架

    <?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http:/ ...

  9. 基于IdentityServer4的单点登录——Client

    以MvcClient项目为例 1.新建项目并添加引用 新建一个asp .net core 2.0的项目引用IdentityModel 2.配置 比之前的控制台客户端多这个步骤,需要配置这个客户端的Cl ...

  10. LeetCode - 4 - Longest Substring Without Repeating Characters

    题目 URL:https://leetcode.com/problems/median-of-two-sorted-arrays/ 解法 二分法. 总的思想是将 2 个数组用 2 个指针“整体”二分. ...