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学习笔记- 补遗的更多相关文章

  1. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  2. VS2013中Python学习笔记[Django Web的第一个网页]

    前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...

  3. python学习笔记之module && package

    个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...

  4. python学习笔记(六)文件夹遍历,异常处理

    python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...

  5. python学习笔记--Django入门四 管理站点--二

    接上一节  python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...

  6. python学习笔记--Django入门0 安装dangjo

    经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...

  7. python学习笔记(一)元组,序列,字典

    python学习笔记(一)元组,序列,字典

  8. Pythoner | 你像从前一样的Python学习笔记

    Pythoner | 你像从前一样的Python学习笔记 Pythoner

  9. OpenCV之Python学习笔记

    OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...

随机推荐

  1. win7 多用户远程登录

    win7多用户远程登录 远程桌面服务使局域网(LAN)上的计算机可以连接到服务器(也称为远程计算机)并运行位于服务器上的程序.这可以只需要在1台机器上安装应用程序,其他机器共享使用.远程桌面连接使用远 ...

  2. Codeforces Round #271 (Div. 2) D. Flowers (递推 预处理)

    We saw the little game Marmot made for Mole's lunch. Now it's Marmot's dinner time and, as we all kn ...

  3. iOS NSMutableDictionary中UIImage的存储和读取

    思路:将UIImage转换成NSData,然后插入到NSMutableDictionary中.读取时,用NSData读出来,然后再转换成UIImage -存储 UIImage *image = [se ...

  4. javax.servlet.http.Part 文件上传

    编辑jsp页面: <html> <head> <base href="<%=basePath%>"> <title>My ...

  5. 在mac上安装gradle(超详细,直接按步骤操作即可轻松搞定)

    第一步, 就是先download最新版本的gradle,网址如下: http://gradle.org/gradle-download/ 然后将下载下来的zip包放解压到本地任意的路径上, 例如,我本 ...

  6. 利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全)

    利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全) 14.4 利用JFreeChart生成折线图 通过JFreeChart插件,既可以生成普通效果的折线图,也可以生成3D效果的折 ...

  7. Spring 框架学习 —— 容器

    容器是 Spring 框架的核心.Spring 容器使用 DI(依赖注入)机制管理构成应用的组件(类),所谓 DI,也即是其能够创建相互协作的组件(类)之间的关联(依赖). 1. 应用上下文(Appl ...

  8. MySQL 基础 —— 数据类型、各种变量

    1. 基本数据类型 char:prod_id char(10),括号内的内容表示字符的长度 decimal:十进制,不带参数为整数(四舍五入) text:文本类型,长度不限 2. 日期和时间处理函数 ...

  9. [Codeforces 639B] Bear and Forgotten Tree 3

    [题目链接] https://codeforces.com/problemset/problem/639/B [算法] 当d > n - 1或h > n - 1时 , 无解 当2h < ...

  10. source命令用法(转载)

    转自:http://zhidao.baidu.com/link?url=mNfsPHSjTEm7llgyMYx0UVNwkJmD_cxLeHtZnHcM6Ms8LDXofVHka_EzHi6GltbR ...