基本数据类型补充,set集合,深浅拷贝等
1.join:将字符串,列表,用指定的字符连接,也可以用空去连接,这样就可以把列表变成str
ll = ["wang","jian","wei"] #可以通过这个方式将列表变成字符串
ll1 = "".join(ll)
print(ll1)
# wangjianwei
2.list来迭代的过程中改变,索引也会改变
问题:将列表中姓"周"的删除,lis = ["周杰伦","周润发","周树人","马化腾"]
看到这个问题首先第一反应就是for循环做判断,然后remove,然后并非如此.
lis = ["周杰伦","周润发","周树人","马化腾"]
for n in lis:
if n[0] == "周":
lis.remove(n)
print(lis)
# ['周润发', '马化腾']
这代码,这逻辑,没毛病吧,但是为什么呢???
原因就在于这个for循环,简单来说for循环是要根据一个指标(索引)去循环,当循环第一个值时,被if命中,执行remove,那么列表中的索引就发生了变化,当周杰伦别删除时,周润发就代替了周杰伦索引为"0"的位置,而这时,for循环的下一个循环目标是索引1,这时候索引为0的周润发巧妙的躲过了这次循环.最终导致该删除的没有别删除干净.
那么怎么解决这个问题呢,很简单,既然在这个列表for循环的时候不能操作,那就把我要删除的值在循环的时候拿出来,然后来删除不就行了.代码如下:
li = []
lis = ["周杰伦","周润发","周树人","马化腾"]
for n in lis:
if n[0] == "周":
li.append(n)
for j in li:
lis.remove(j)
print(lis)
3.字典的for循环
有如下题目:算出主播的平均收入,然后将低于平均值的主播干掉,zhubo = {'卢本伟':122000,'冯提莫':189999,'金老板':99999,'吴老板':25000000,'alex':126}
既然上面提到了列表在for循环中有问题,那么字典也不排除,直接上错误代码..
zhubo = {'卢本伟':122000,'冯提莫':189999,'金老板':99999,'吴老板':25000000,'alex':126}
del_list = []
sum = 0
for n in zhubo.values():
sum += n
sum = sum / len(zhubo)
for j in zhubo.keys():
if zhubo[j] < sum:
del zhubo[j]
print(zhubo) 错误提示:
for j in zhubo.keys():
RuntimeError: dictionary changed size during iteration
这个错误提示的大概意思是说,字典在迭代的过程中不能改变大小.所以想在字典循环的时候在对字典做增删改是不可能了.要想操作的话只能按照上面列表的方式(肯定还有其他的办法),直接上代码.
zhubo = {'卢本伟':122000,'冯提莫':189999,'金老板':99999,'吴老板':25000000,'alex':126}
del_list = []
sum = 0
for n in zhubo.values():
sum += n
sum = sum / len(zhubo)
for j in zhubo.keys():
if zhubo[j] < sum:
del_list.append(j)
for q in del_list:
del zhubo[q]
print(zhubo)
4.fromkey的使用及深坑位置
dict中的fromkey(,可以帮助我们创建新的dict)
# 方法一
# dic = {}
# s = dic.fromkeys("周杰伦","昆凌")
# print(s)
# {'周': '昆凌', '杰': '昆凌', '伦': '昆凌'}
# 可以看出将fromkey中的第一个值迭代了,成为每一个value的key,创建出来的是一个value相同,key不同的字典.(第一个值需要可迭代) # 方法二
dic = {}
ss = dict.fromkeys([1,2,3,4],"球员")
print(ss)
# {1: '球员', 2: '球员', 3: '球员', 4: '球员'}
#这一种方式也能实现
# ***************深坑请注意***************
# 仔细看下方法二..............定义的空字典的变量名为dic,而使用fromkey的时候却用的dict,dict是一个类,一个关键字,不过和方法一是同一个效果
原因就是fromkey是针对类的操作,而不是针对象的,也叫"静态方法" set有时间在补充吧 深浅拷贝
对于深浅拷贝,我没有太多的例子,不过总结了几句话. 1>.赋值,任何类型的数据进行赋值,就相当于windows的快捷方式,本质其实都是一个,一个修改全部都会变. 2>.字符串,数字无论是赋值,浅拷贝,深拷贝,在内存中全都是一个id 3>.除了字符串,数字其他的,浅拷贝: 就是拷贝最外层的,里面的还是以前的. 4>.除了字符串,数字,其他的深拷贝: 拷贝所有,但是不拷贝最后一层也就是字符串或数字. 5>.通过拷贝方式创建对象,要比正常创建快很多
基本数据类型补充,set集合,深浅拷贝等的更多相关文章
- 基本数据类型补充 set集合 深浅拷贝
一.基本数据类型补充 1,关于int和str在之前的学习中已经介绍了80%以上了,现在再补充一个字符串的基本操作: li = ['李嘉诚','何炅','海峰','刘嘉玲'] s = "_&q ...
- 基础数据类型补充 set集合 深浅拷贝
一.基础数据类型补充 1. "拼接字符串".join(可迭代对象) 可迭代对象为列表时,输出列表元素与拼接字符串的拼接 li = ['张三', '李四', '王五', '赵四'] ...
- 基础数据 补充 set() 集合 深浅拷贝
一 对字符串的操作 li = ["张曼玉", "朱茵", "关之琳", "刘嘉玲"] s = "_" ...
- python学习打卡 day07 set集合,深浅拷贝以及部分知识点补充
本节的主要内容: 基础数据类型补充 set集合 深浅拷贝 主要内容: 一.基础数据类型补充 字符串: li = ["李嘉诚", "麻花藤", "⻩海峰 ...
- 6.Python初窥门径(小数据池,集合,深浅拷贝)
Python(小数据池,集合,深浅拷贝) 一.小数据池 什么是小数据池 小数据池就是python中一种提高效率的方式,固定数据类型,使用同一个内存地址 小数据池 is和==的区别 == 判断等号俩边的 ...
- Python基础知识(六)------小数据池,集合,深浅拷贝
Python基础知识(六)------小数据池,集合,深浅拷贝 一丶小数据池 什么是小数据池: 小数据池就是python中一种提高效率的方式,固定数据类型使用同一个内存地址 代码块 : 一个文 ...
- Day7--Python--基础数据类型补充,集合,深浅拷贝
一.基础数据类型补充 1.join() 把列表中的每一项(必须是字符串)用字符串拼接 与split()相反 lst = ["汪峰", "吴君如", " ...
- day8数据类型补充,集合,深浅拷贝
思维导图: 集合的补充:下面的思维导图有一个点搞错了,在这里纠正一下,没有合集,是反交集,^这个是反差集的意思 . 交集&,反交集^,差集-,并集|,然后就是子集和超集 数据类型补充: ''' ...
- python摸爬滚打之day07----基本数据类型补充, 集合, 深浅拷贝
1.补充 1.1 join()字符串拼接. strs = "阿妹哦你是我的丫个哩个啷" nw_strs = "_".join(strs) print(nw_s ...
随机推荐
- Android Studio修改默认Activity继承AppCompatActivity(转)
在Android Studio中新建Activity默认继承AppCompatActivity,感觉这点十分不爽,找了很久,终于发现在Android Studio安装目录下有个模板文件,修改其中的参数 ...
- css颜色 hsla 和line-gradient
h 表示色调 从0-360 s 饱和度 0 - 100% l 亮度 0 -100% a 透明度 0-1
- 【起航计划 030】2015 起航计划 Android APIDemo的魔鬼步伐 29 App->Preferences->Preferences from code
这里我们使用类比的方法,将 PreferenceActivity 与一般的Activity 作个类比,可以更好的理解Android.Preference中的各个类. PreferenceActivit ...
- 【起航计划 010】2015 起航计划 Android APIDemo的魔鬼步伐 09 App->Activity->Redirection 根据shared preferences是否有值决定是否redirect
Redirection示例涉及到三个Acitivity: RedirectEnter, RedirectMain,RedirectGetter. 示例的主Activity为 RedirectEnter ...
- u-boot分析(五)----I/D cache失效|关闭MMU和cache|关闭看门狗
u-boot分析(五) 上篇博文我们按照210的启动流程,对u-boot启动中的设置异常向量表,设置SVC模式进行了分析,今天我们继续按照u-boot的启动流程对以下内容进行分析. 今天我们会用到的文 ...
- Struts2_BBS2009小实战
Struts2_BBS2009准备:链接: http://pan.baidu.com/s/1nvTZz9R 密码: 875a ext3.0_直接部署运行:链接: http://pan.baidu.co ...
- Mac下配置apach服务
有的时候,我们需要在内网工作组中分享一些文件或是后台接口没有及时给出,你又想要模拟真实数据,直接在项目里创建plist也可以做到这种需求,但难免让工程变得冗余且看起来比较Low.这个时候就看出配置本地 ...
- 我的java开发规范
关于文件的命名参考阮一峰的这篇文章:http://www.ruanyifeng.com/blog/2017/02/filename-should-be-lowercase.html,文中说文件名全部使 ...
- 2017年10月31日结束Outlook 2007与Office 365的连接
2017 年10月31日 ,微软即将推出 Office 365中Exchange Online邮箱将需要Outlook for Windows的连接,即通过HTTP Over MAPI方式,传统使用R ...
- 利用C语言编辑画图程序的实现方法
不知道大家在进行开发县级电网调度自动化系统的时候,是否都会遇到一个问题就是:要绘制一个电力系统一次接线图.大家都应该知道其实电力系统的一次接线图是较为复杂的,如果想要使用一般的编程方法来进行绘制的话, ...