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来操作,这样才能按照单个字 ...
随机推荐
- linux 条件测试 ******
文件状态测试 -b filename 当filename 存在并且是块文件时返回真(返回0) -c filename 当filename 存在并且是字符文件时返回真 -d pathname 当path ...
- codeforces round #416 div2
A:暴力模拟 #include<bits/stdc++.h> using namespace std; int a, b; int main() { scanf("%d%d&qu ...
- cloudstack ---部署的架构
cloudstack跟KVM一起部署的架构 下图是CloudStack跟kvm一起部署的架构: 在每个kvm的宿主机上都需要部署agent程序. cloudstack跟vsphere一起部署的架构 下 ...
- cookie应用(一周内免登陆)
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- codevs2557张程易(背包dp)
2557 张程易,编程易 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 张程易是一名神奇的魔法少女,在oier之中有着 ...
- Django day28 频率组件,解析器
一:频率组件: 1.频率是什么? 节流,访问控制 2. (1)内置的访问频率控制类SimpleRateThrottle (2)写一个类,继承SimpleRateThrottle class MyThr ...
- BZOJ 4310 二分+SA+RMQ
思路: 首先求出后缀数组和height数组,这样能得到本质不同的子串数目 这里利用:本质不同的子串=∑(Len−SA[i]−height[i])=∑(Len−SA[i]−height[i])利用SA[ ...
- 【知识总结】回文自动机(Palindrome_Automaton)
参考资料:Palindromic Tree--回文树[处理一类回文串问题的强力工具](请注意,其中似乎有一些错误) 回文自动机似乎和回文树是同一个东西qwq? 回文自动机(PAM)是一种处理回文串的工 ...
- Debug无效,不起作用
问题:debug调试时,红色断点空心,无效. 解决办法: 1.(工具 => 选项 =>调试 => 要求源文件与原始版本完成匹配 )去掉勾. 2.若是debug还是空心,不起作用,可以 ...
- IIS: 响应消息的内容类型 text/html; charset=utf-8 与绑定(text/xml; charset=utf-8)的内容类型不匹配。如果使用自定义编码器,请确保正确实现 IsContentTypeSupported 方法
以前好好的项目,突然出现了这个问题.一顿google后无果,有人说是程序池的原因,有人说是安全配置的原因,照着网上方法试了多次,还是没有解决.如下图: 突然发现了一片文章 (https://www.j ...