python编码小记
Python编码小记
标签(空格分隔): 编程 python
1.list类型remove()操作
列表对象执行remove()函数后,会自动退出循环,所以如果想利用一个单独的for循环删除列表中多个成员,是办不到的,可尝试使用多重循环。
例如下面的代码:
for item in test_list:
if item == 0:
test_list.remove(item)
如果test_list中为0的项多于两个,那么此循环在删除第一个0后便会退出循环,无法利用一个循环删除其中所有为零的项!字典也是如此。细想想,应该是remove后test_list发生了变化,无法继续迭代。
2.对元素为对象的list(或dict)进行deepcopy
如果一个列表或字典中,有元素为类对象(列表或字典中保存的应是对象的引用),那么用copy模块中deepcopy()进行拷贝后,相应引用地址会发生变化,相当于是类利用相同参数初始化的不同实例。
class Driver(object):
def __init__(self, name):
self.name = name
......
......
driver_list = []
driver1 = Driver('str1')
driver2 = Driver('str2')
driver_list.append(driver1)
driver_list.append(driver2)
copy_list = deepcopy(driver_list)
for item in driver_list:
if item.name == 'str1':
copy_list.remove(item)
......
在执行到最后的for循环中remove语句时,会提示列表中找不到对象。原因就是在deepcopy时对Driver类对象也进行了复制,复制产生的copy_list中项与原来driver_list中项,分配内存地址定然不同,而相应列表中存放的都是他们的引用(也就是地址),在copy_list中找不到相应元素也就顺理成章了。
3.可变对象与不可变对象
先看如下几行代码:
str1 = ' This is my test! '
list1 = ['this', 'is', 'my', 'test', ' ']
str1.strip()
for item in str1.split(' '):
.......
list2 = list1.remove(' ')[:2]
这段代码在执行时,line.3中str1执行了strip()后的值并未保存,str1值不变, for循环中 item还是会取到两个空值。line.6执行会报错TypeError,因remove()后无返回值,相当于对NoneType型对象切分。
究其原因就是因为可变对象与不可变对象的区分。字符串、元组、数字等均是不可变对象,字符串strip()后会产生一个新字符串,原变量str1的值不会改变,必须保存下新字符串才能使用;而列表、字典等可变对象,执行remove()等函数(不会有返回值)改变其值后,原变量值就已经改变,可直接使用原变量。
正确代码:
str2 = str1.strip()
for item in str2.split(' '):
.......
list1.remove(' ')
list2 = list1[:2]
python编码小记的更多相关文章
- 关于Python编码问题小记
Python编码问题小记: 引子: 最近在复习redis,当我在获取redis的key的时候,redis 存储英文和汉字下面这个样子的,我知道汉字是用16进制的UTF-8编码了,然后突然很想搞清楚字符 ...
- (转载) 浅谈python编码处理
最近业务中需要用 Python 写一些脚本.尽管脚本的交互只是命令行 + 日志输出,但是为了让界面友好些,我还是决定用中文输出日志信息. 很快,我就遇到了异常: UnicodeEncodeError: ...
- Python 编码简单说
先说说什么是编码. 编码(encoding)就是把一个字符映射到计算机底层使用的二进制码.编码方案(encoding scheme)规定了字符串是如何编码的. python编码,其实就是对python ...
- Python之路3【知识点】白话Python编码和文件操作
Python文件头部模板 先说个小知识点:如何在创建文件的时候自动添加文件的头部信息! 通过:file--settings 每次都通过file--setings打开设置页面太麻烦了!可以通过:View ...
- python编码规范
python编码规范 文件及目录规范 文件保存为 utf-8 格式. 程序首行必须为编码声明:# -*- coding:utf-8 -*- 文件名全部小写. 代码风格 空格 设置用空格符替换TAB符. ...
- 【转】python编码的问题
摘要: 为了在源代码中支持非ASCII字符,必须在源文件的第一行或者第二行显示地指定编码格式: # coding=utf-8 或者是: #!/usr/bin/python # -*- coding: ...
- 【转】python编码规范
http://blog.csdn.net/willhuo/article/details/49300441 决定开始Python之路了,利用业余时间,争取更深入学习Python.编程语言不是艺术,而是 ...
- python 编码 UnicodeDecodeError
将一个py脚本从Centos转到win运行,出错如下: UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 0: il ...
- Python编码/文件读取/多线程
Python编码/文件读取/多线程 个人笔记~~记录才有成长 编码/文件读取/多线程 编码 常用的一般是gbk.utf-8,而在python中字符串一般是用Unicode来操作,这样才能按照单个字 ...
随机推荐
- http协议的MP4文件播放问题的分析
现在手上有两个链接 (1) http://202.108.16.173/cctv/video/8C/35/EB/E8/8C35EBE84E7B483C8741CF9A60154993/gphone/4 ...
- Potted Flower(线段树+dp)
http://poj.org/problem?id=2750 题意:在一个圈中取若干个相邻的数,求他们的最大序列和.不能够同时取所有的数. 看了一篇解题报告写的很详细..http://blog.csd ...
- HTML Email 编写指南
今天,我想写一个"低技术"问题. 话说我订阅了不少了新闻邮件(Newsletter),比如JavaScript Weekly.每周收到一封邮件,了解本周的大事. 有一天,我就在想, ...
- POJ3070Fibonacci
矩阵乘法裸题 求快速幂 #include<iostream> #include<cstdio> #define ll long long #define Mod 10000 u ...
- SS配置,Brook是什么?,Brook如何配置(Android篇)
很长时间没有更新了,今天给大家分享一下什么是Brook,和SS有什么区别?写的不好,请勿见外,大佬绕过. Brook简单介绍 Brook 是一个高效的 Socks5 代理软件,官方支持Windows. ...
- 尝试安卓与js交互
1.android中利用webview调用网页上的js代码. Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true ...
- 实例化flask的参数及对app的配置
Flask 是一个非常灵活且短小精干的web框架 , 那么灵活性从什么地方体现呢? 有一个神奇的东西叫 Flask配置 , 这个东西怎么用呢? 它能给我们带来怎么样的方便呢? 首先展示一下: from ...
- 简单入门构建spark1.6.1源码环境
能有源码的辅助,加上自身的修炼,能起到很好的作用! 对于初学者,不建议,一上来看源码. 下载 http://archive.apache.org/dist/spark/spark-1.6.1/
- 前端-Node.js思维导图笔记
看不清的朋友右键保存或者新窗口打开哦!喜欢我可以关注我,还有更多前端思维导图笔记
- Android studio & SDK的国内有效站点。
SDK.TOOLS的国内有效镜像节点: mirrors.zzu.edu.cn/android/repository/ 网上的地址只写了mirrors.zzu.edu.cn,有误,需要补齐后面的子目录才 ...