python学习笔记- 补遗
1、extend 和 append区别
extend 和 append区别
#extend接受list参数,添加每个元素至原list尾端
>>> l=[1,2,3]
>>> id(l)
63475272
>>> l.extend(['a','b','c'])
>>> l
[1, 2, 3, 'a', 'b', 'c']
>>> id(l)
63475272 #append接受任何参数,独立追加至list尾端
>>> l=[1,2,3]
>>> id(l)
63473544
>>> l.append(['a','b','c'])
>>> l
[1, 2, 3, ['a', 'b', 'c']]
>>> id(l)
63473544
两函数过程不更改内存地址
2、关于range()的几点
函数原型:range(start, end, scan)
参数含义:start:计数从start开始。默认是从0开始。例如range(5)等价于range(0, 5); end:技术到end结束,但不包括end.例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5 scan:每次跳跃的间距,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(1,10))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(1,10,3))
[1, 4, 7]
>>> list(range(-4,4))
[-4, -3, -2, -1, 0, 1, 2, 3]
>>> list(range(4,-4)) #start→ end(默认)一定是数轴正向迭代,4正向无法到达-4,空集list。
[]
>>> list(range(4,-4,-1)) #scan负数表示反向迭代,于是可以实现。
[4, 3, 2, 1, 0, -1, -2, -3]
>>> list(range(4,-4,-2))
[4, 2, 0, -2]
3、关于for循环
i、基本规则
for...in适用于任意 可迭代序列:list、tuple、str、range().. <list>
for i in[1,2,3]:
print(i)
1
2
3 for programminglanguage in['c','java','python','PHP']:
print(programminglanguage)
c
java
python
PHP <tuple>
for i in(1,2,3):
print(i)
1
2
3 <str>
for i in'abc':
print(i)
a
b
c <range>
for i in range(5):
print(i)
0
1
2
3
4
有一种通过 “序列索引迭代”
seq=['c','java','python','PHP']
for i in range(len(seq)): #通过len函数获取seq元素数量,带入range()函数就得到一个seq内元素数量的序列,它等同seq的索引
print(seq[i])
#试着写个范式
list=['obj1','obj2','obj3']
for index in range(len(list)):
print(list[index])
ii 易错
for i in range(5):
print i
i += 2
print i
print '一轮结束'
#每次循环 i 都被从新赋值,而不是继承上轮 i 值。
while i < 5: #while不会像for一样对i 重新赋值
print i
i += 2
print i
print '一轮结束'
4、关于‘无返回’与‘原地址’不变的错误辨析。
曾经在某博客上看过一段分析‘add函数给set添加元素,原set不变’的文字,虽然论述是对的,代码却很诡异(我不敢说它是错的,但我的理解和它不一样),由此也想起一个小问题。
1 a={'a','b','c','d'}
2 b=a.add('e')
3 c=a.add('a')
4 print(a,type(a))
5 print(b,type(b))
6
7 #运行结果
8 {'a', 'b', 'c', 'e', 'd'} <class 'set'> #在集合里添加一个元素,不生成新的集合。
9 None <class 'NoneType'>
以上是它给的证明add不会生成新集合的代码。对此我怎么看都觉的诡异,于是自己试下
>>> a={'a','b','c','d'}
>>> a.add('e')
>>> #此行应得a.add('e')这个操作的返回值,但add和append、pop、get等函数一样是没有返回值的,或者说它返回一个none. 你强行给它赋值给一个变量b,然后输出b,只能得到none. b并不是a的引用!我想此处原文作者犯了一个逻辑上的错误
>>> a
{'d', 'c', 'b', 'a', 'e'}
如果想证明原作者的论述,应该这样写
>>> a={'a','b','c','d'}
>>> id(a)
36603944
>>> a.add('e')
>>> a
{'d', 'c', 'b', 'a', 'e'}
>>> id(a) #通过验证add操作前后的a的地址来证明
36603944
我想原作者本意论述是没错的,但写的代码不能证明论点。
python学习笔记- 补遗的更多相关文章
- python学习笔记整理——字典
python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...
- VS2013中Python学习笔记[Django Web的第一个网页]
前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...
- python学习笔记之module && package
个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...
- python学习笔记(六)文件夹遍历,异常处理
python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...
- python学习笔记--Django入门四 管理站点--二
接上一节 python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...
- python学习笔记--Django入门0 安装dangjo
经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...
- python学习笔记(一)元组,序列,字典
python学习笔记(一)元组,序列,字典
- Pythoner | 你像从前一样的Python学习笔记
Pythoner | 你像从前一样的Python学习笔记 Pythoner
- OpenCV之Python学习笔记
OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...
随机推荐
- FTP Server完整篇 ubuntu 10.04
1. sudo apt-get install vsftpd #安裝FTP Server(vsftp:very secure FTP) 安装后,会自动生成ftp用户,和ftp的文件夹,如果没有自动 ...
- Linux bash: scp: command not found的问题记录
,总结 scp成功,须要两个server都安装了scp服务才行.
- xenserver PXE安装系统错误的解决
刚开始在xenserver里找pxe启动安装系统找了半天,最后在NEW VM里的template里选择other install media 里找到pxe启动,启动之后加载映像,安装到一半又停止了, ...
- 【hdu3544】 Alice's Game
给一块n*m的巧克力,Alice只能垂直切,切成A*m和B*m,并且A+B=n,Bob只能横切,只能切成A*n和B*n,并且A+B=m. 对于n*n的这种巧克力,谁先切了第一刀,就直接让对方有切两刀的 ...
- C语言8大经典排序算法(1)
算法一直是编程的基础,而排序算法是学习算法的开始,排序也是数据处理的重要内容.所谓排序是指将一个无序列整理成按非递减顺序排列的有序序列.排列的方法有很多,根据待排序序列的规模以及对数据的处理的要求,可 ...
- YTU 2631: B1 能存各种类型数据的Store类
2631: B1 能存各种类型数据的Store类 时间限制: 1 Sec 内存限制: 128 MB 提交: 245 解决: 177 题目描述 有一种类,海纳百川,可以对任意类型的数据进行存取,造就 ...
- 【HDU4706】Children's Day
http://acm.hdu.edu.cn/showproblem.php?pid=4706 水题,也不知道有没有spj // <4706.cpp> - 11/03/16 14:11:21 ...
- luogu 1080 国王游戏
题目大意: 有一些数对,每个数对的得分为它之前所有数对的左侧数之乘积除以它的右侧数 求重新排列后数列中所有数对中最大得分尽可能小(第一个数对不参与排序,仍然为第一个) 思路: 非常简单,可以根据它对后 ...
- 10.06 WZZX Day1总结
今天迎来了WZZX的模拟.打开pdf的时候我特别震惊,出题的竟然是神仙KCZ!没错,就是那个活跃于各大OJ,在各大OJ排名靠前(LOJ Rank1),NOI2018 Rank16进队的kczno1!! ...
- SVN工具使用技巧
SVN打tag SVN打tag是一个很常用的功能,要谈打tag,还得从SVN官方推荐的目录结构说起.SVN官方推荐在一个版本库的根目录下先建立trunk.branches.tags这三个文件夹,其中t ...