五. Python基础(5)--语法
五. Python基础(5)--语法
1 ● break结束的是它所在的循环体, continue是让它所在的循环体继续循环
# 打印: 1 10 2 10 3 10 4 10 5 10 6 10 7 10 8 10 9 10 for i in range(1, 10): print(i , end = ' ') for i in range(10, 20): print(i , end = ' ') break # break是结束它所在的循环体 |
2 ● 打印: 1 10 2
# 方法1 is_first = True for i in range(1, 10): if i < 3: print(i) else: break for j in range(10, 20): if is_first: print(j) is_first = False # break 如果这里有break, 11, 12,13,...19的循环不会再进行, 这个内部的循环直接结束, 不过写不写break, 结果都是一样的.
# 方法2 flag = False for i in range(1, 10): print(i) if flag: # ① 在外循环进行第二轮循环之前, flag已经变成True break for j in range(10,20): print(j) flag = True break # 内循环只进行一轮, 并且在这轮循环内, flag已经变成True |
3 ● 删除奇数的索引项
# 已知: li = [11,22,33,44,55,66] # 要求删除奇数索引的元素 # 方法1: 保留偶数项目 tmp_list = [] for i in range(0, len(li)): if i % 2 == 0: tmp_list.append(li[i]) print(tmp_list)
# 方法2: # 从后往前删, 因为如果从前往后删, 每删一个元素,索引不是指原list的索引 for i in range(len(li)-1, -1, -1): # 不包括-1, 包括0
del li[i] print(li)
# 方法3: # 使用list的slicing功能 del li[0 : len(li) : 2] # 注意说法: 奇数索引的元素 print(li) # 这里通过步长删除列表元素, python内部已经避免了列表长度变化的问题. # 结果: [22, 44, 66] |
4 ● 删除字典元素
如果遍历词典时, 然后删除符合预期条件的字典元素,程序会报错: |
dic = {'u1': 'v1', 'k2': 'v2', 'k3': 'v3'} # 不要在循环字典的过程当中修改字典的大小(注意: 词典的值是可以改的) tmp_list =[] for key in dic.keys(): if 'k' in key: tmp_list.append(key)
for item in tmp_list: # 此时循环的是列表, 删除的是字典元素
print(dic)
# 结果: {'u1': 'v1'} |
在遍历中删除元素是不好的设计习惯 . |
5 ● 元组特别案例
v1 = (1) print(type(v1)) v2 = (1,) # 如果是v1 = [1], type(v1)的值是<class 'list'> print(type(v2)) # <class 'int'> # <class 'tuple'> |
6 ● 强转过程中需要注意的地方
# 强转字符串为list和tuple时会进行迭代. |
7 ● False和True的总结
False: 0, None, '', [], {}, () |
True: 除上面所有的 |
8 ● 域宽(filed width)
%10d 这里的10表示域宽(filed width) |
print("我今年%10d岁了"%(5)) |
我今年 5岁了. |
9 ● 字典和列表的结合
li = [11, 22, 33, 44, 55, 66, 77, 88, 99] # 生成一词典, 大于66的属于'k1'这个键, 小于66的属于'k2'这个键, # 方法1: dic = {} for i in li: if i > 66: if 'k1' not in dic.keys(): dic['k1'] = [i] # 需要什么就随时创立什么, 这里是需要一个list就创立一个lsit # 比较麻烦的写法是: # tmp_list = [i] # dic['k1'] =tmp_list else: dic['k1'].append(i) elif i < 66: if 'k2' not in dic.keys(): dic['k2'] = [i] else: dic['k2'].append(i) # esle : 如果对其它情况不作处理, 可以省略这一语句 print(dic)
li = [11, 22, 33, 44, 55, 66, 77, 88, 99] # 生成一词典, 大于66的属于'k1'这个键, 小于66的属于'k2'这个键, dic = {} for i in li: if i >66: if 'k1' in dic.keys(): dic['k1'].append(i) else: dic['k1'] = [i] elif i < 66: if 'k2' in dic.keys(): dic['k2'].append(i) else: dic['k2'] = [i]
print(dic) |
1. ● 字符串类型
Py2的字符串类型有两种: Py3的字符串前加或不加'u', 都是str类型, str在外存和网络传输中的形式是bytes类型: |
仔细阅读下面的文章: http://blog.chinaunix.net/uid-27838438-id-4227131.html http://blog.csdn.net/ryfdizuo/article/details/42102505 http://www.cnblogs.com/tingyugetc/p/5727383.html 上面文章提到python3.x中不能查看字符串的Unicode序列, 实际上可以通过下面的方法查看:
python2.x中:
# 六个字节(gbk) |
对于python2来说: decode 的是将其他编码的字符串转换成 Unicode 编码,例如: name.decode("GB2312"),表示将GB2312编码的字符串name转换成Unicode编码 encode 的是将Unicode编码转换成其他编码的字符串,eg name.encode("GB2312"),表示将GB2312编码的字符串name转换成GB2312编码 |
2 ● 深浅拷贝区别简述
※ ① Python中变量与C/C++/Java中不同,它是指对象的引用(引用是自动形成的从变量到对象的指针),Python是动态类型,程序运行时候,会根据对象的类型来确认变量到底是什么类型。 ② Python中的变量并不直接存储值,而是存储了值的内存地址或者引用,这也是变量类型随时可以改变的原因。
例如: >>> a = 3 在运行a=3后,变量a变成了对象3的一个引用。
※ >>> a = 3 >>> b = a 在运行赋值语句b = a之后,变量a和变量b指向了同一个对象的内存空间. |
浅拷贝: 只拷贝最外层对象的内容, 对于内部嵌套的对象, 只拷贝其引用. 深拷贝: 拷贝所有层的对象的内容.
加深理解: Python中对象的赋值都是进行对象引用(内存地址)的传递. 深浅拷贝都是对源对象的复制,占用不同的内存空间 如果源对象只有一级目录的话,源做任何改动,不影响深浅拷贝对象 如果源对象不止一级目录的话,源做任何改动,都要影响浅拷贝,但不影响深拷贝 序列对象的切片其实是浅拷贝,即只拷贝顶级的对象 对于非容器类型(如数字、字符串、和其他'原子'类型的对象)没有被拷贝一说 如果元祖变量只包含原子类型对象,则不能深拷贝,例如: |
浅拷贝只拷贝父对象,不会拷贝对象的内部的子对象. 深拷贝拷贝对象及其子对象. |
※ 知识拓展: C++中的浅拷贝和深拷贝
shallow copy(浅拷贝): 默认的复制构造函数实现的是浅拷贝. 浅拷贝只是简单地复制指向数据的指针,并不复制数据本身。 The default copy constructor realizes shallow copy, Shallow copy just simply copies the pointers that point to data, and doesn't copy the data.
deep copy(深拷贝): 我们可以自己写一个复制构造函数来实现深拷贝, 该拷贝构造函数不仅可以实现原对象和新对象之间数据成员的拷贝,而且可以为新的对象分配单独的内存资源。 不仅复制指针,并且复制指针指向数据的本身。 We can write a copy constructor by ourselves to realize deep copy, which can not only realize the cloning of an original object to get a new one, but also allocate memory space for the new object. |
五. Python基础(5)--语法的更多相关文章
- 二. Python基础(2)--语法
二. Python基础(2)--语法 1.实现一个简单的登录系统 '''# 形式1 n = 1 while n < 4: name = input("请输入姓名\n" ...
- 二十五. Python基础(25)--模块和包
二十五. Python基础(25)--模块和包 ● 知识框架 ● 模块的属性__name__ # my_module.py def fun1(): print("Hello& ...
- 十五. Python基础(15)--内置函数-1
十五. Python基础(15)--内置函数-1 1 ● eval(), exec(), compile() 执行字符串数据类型的python代码 检测#import os 'import' in c ...
- 六. Python基础(6)--语法
六. Python基础(6)--语法 1 ● Python3中, Unicode转字节的方法 print(bytes("李泉", encoding = 'utf-8')) prin ...
- 四. Python基础(4)--语法
四. Python基础(4)--语法 1 ● 比较几种实现循环的代码 i = 1 sum = 0 while i <= 10: # 循环10-1+1=10次 sum += i i ...
- 三. Python基础(3)--语法
三. Python基础(3)--语法 1. 字符串格式化的知识补充 tpl = "我是%s,年龄%d,学习进度100%" %('Arroz',18) print(tpl) # 会提 ...
- 一. Python基础(1)--语法
一. Python基础(1)--语法 1. 应用程序 1.1 什么是计算机(Computer)? 组成 ①运算器 arithmetic unit; ※ Arithmetic unit and cont ...
- Python基础:语法基础(3)
本篇主要介绍Python中一些基础语法,其中包括:标识符.关键字.常量.变量.表达式.语句.注释.模块和包等内容. 1. 标识符和关键字 1.1 标识符 标识符是变量.常量.函数.属性.类.模块和包等 ...
- Python基础__Python语法基础、条件、循环
之前主要讨论的是Python的对象,这本节将第一次走进Python的语言之旅,将会介绍条件与循环.本节我们将会涉及到复合语句,简要介绍一下Python的语法规则是有必要的Python语法规则 1.语句 ...
随机推荐
- SVN-版本控制工具安装与使用
什么是版本控制? 版本控制(Revision control)是一种软体工程技巧,籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新. 版本控制透过文档控制(documentation con ...
- 启动node程序报错:event.js:183 throw er; // unhandled 'error' event
启动node程序时,报如下错误:
- slf4j/logback: logging日志的配置
slf4j/logback: logging日志的配置 import依赖: import org.slf4j.Logger;import org.slf4j.LoggerFactory;private ...
- English trip M1 - AC6 How to make salad? Teacher:Patrick
In this lesson you will learn to give instructions. 在本课中,您将学习如何提供说明. 课上内容(Lesson) How to make a sal ...
- Onsen UI快速入门 --Onsen UI
一.什么是Onsen UI? 1.一系列专为移动应用程序设计的丰富UI组件.具有遵循原生iOS和Android设计标准的即时实现功能.免费使用,100%开源软件(Apache v2许可证).Onse ...
- 动态加载DataGrid表头及数据
初始化表头 js生成前端 /*初始化表头*/ function initDataGridTitle(id) { $.ajax({ url: '/${appName}/report/***/***', ...
- Kubernetes DNS 高阶指南(转发别人 解析很详细)
转发地址:http://www.jintiankansha.me/t/Js1R84GGAl DNS 是 Kubernetes 的核心功能之一,Kubernetes 通过 kube-dns 或 Cor ...
- 【PowerDesigner】【5】数据模型 CDM
前言:各种箭头的含义其实我还是有点混乱,所以这里只做记录 参考博客: 1,Powerdesigner数据库建模--概念模型--ER图[转] - holycrap - 博客园https://www.cn ...
- 什么是BFC、IFC、GFC和FFC
什么是BFC.IFC.GFC和FFC CSS2.1中只有BFC和IFC, CSS3中才有GFC和FFC. FC的全称是:Formatting Contexts,是W3C CSS2.1规范中的一个概念. ...
- Oracle 视图和索引
一.视图 1.什么是视图[View] (1)视图是一种虚表 (2)视图建立在已有表的基础上, 视图赖以建立的这些表称为基表 (3)向视图提供数据内容的语句为 SELECT 语句,可以将视图理解为存储起 ...