python学习笔记(二)

List:

list是一种有序的集合,可以随时添加和删除其中的元素。List里面的元素可以是不同类型的,也可以是list,嵌套,相当于二维数组。list=[‘dfs‘,‘DSF‘,123],空的list=[]

len():函数可以获得list元素的个数

list[0]: 下标为0的元素值

list[-1]:倒数第一个元素,即最后一个数

pop():弹出末尾的元素

pop(i):弹出第i个元素

append():list中追加元素到末尾

insert(1,“”):把元素插入到指定的位置,比如索引号为1的位置。

sort():对元素排序

要把某个元素替换成别的元素,可以直接赋值给对应的索引位置

可变也不可变对象:

字符串是不可变的,比如str="apple";str.replace(‘a‘, ‘A‘) 这个的结果是Apple,但是str还是apple

list是可变的:比如list = [1,2,4,3,5]; list.sort(); 这个结果是12345,list的结果也是12345

所以,对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。



tuple:

有序列表叫元组。tuple和list非常类似,但是tuple一旦初始化就不能修改,没有append(),insert()这样的方法。其他获取元素的方法和list是一样的。当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来。tuple=(‘dfs‘,‘DSF‘,123),空的tuple=();只有一个元素的tuple=(1,)

在显示只有1个元素的tuple时,也要加一个逗号,,以免误解成数学计算意义上的括号。

"可变"的tuple:tuple = (‘a‘, ‘b‘, [‘A‘, ‘B‘]);tuple[2][0]=‘x‘;tuple=[2][1]=‘y‘;这时候在输出tuple为(‘a‘, ‘b‘, [‘x‘, ‘y‘])?

这个tuple定义的时候有3个元素,分别是‘a‘,‘b‘和一个list。

之后修改list的值,变为:

tuple指向的值并没有变化,变化的只是list指向的值,tuple一开始指向的list并没有改成别的list,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向‘a‘,就不能改成指向‘b‘,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!



字典:

dictionary,相当于map,一个键值对,使用大括号,dict = {‘apple’: 1,‘bananan’:2, ’orange‘:3}。相应的使用dict[‘apple‘]就可以得到1。

这种key-value存储方式,在放进去的时候,必须根据key算出value的存放位置,这样,取的时候才能根据key直接拿到value。多次对一个key放入value,后面的值会把前面的值冲掉即更新。key必须是不可变对象。

判断是否存在key:一、可以使用in :‘apple‘ in dict 输出 true。二、通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value:dict.get(‘apple‘),dict.get(‘apple‘,-1)。

pop(key)方法,删除一个key,对应的value也会从dict中删除

和list比较,dict有以下几个特点:

查找和插入的速度极快,不会随着key的增加而增加;

需要占用大量的内存,内存浪费多。

而list相反:

查找和插入的时间随着元素的增加而增加;

占用空间小,浪费内存很少。

所以,dict是用空间来换取时间的一种方法。



set:

set和dict类似,也是一组key的集合,但不存储value。在set中,没有重复的key。

要创建一个set,需要提供一个list作为输入集合:s=set([1,2,3]),重复的值会自动过滤:s=set([1,2,2,3,3]) 为set([1,2,3])

add(key):方法可以添加元素到set中

remove(key):方法可以删除元素

set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作(s1 & s2 | S3)



切片Slice:

L[0:3]:L[:3]取前3个元素,从索引0开始取,直到索引3为止,但不包括索引3。

L[-2:]:倒数两个数(后两个数),最后一个数的索引是-1

L[-2:-1]:倒数第二个数,这个时候不包括-1即最后一个数。

L[::5]:每5个数取一个,



迭代:

给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple。for.....in

默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.itervalues(),如果要同时迭代key和value,可以用for k, v in d.iteritems()。

由于字符串也是可迭代对象,因此,也可以作用于for循环:for ch in ‘ABC‘

使用for循环时,只要作用于一个可迭代对象,for循环就可以正常运行,不必知道该对象究竟是list还是其他数据类型。

如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:

>>> from collections import Iterable

>>> isinstance(‘abc‘, Iterable) # str是否可迭代

True

如果要对list实现类似Java那样的下标循环?Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:

>>> for i, value in enumerate([‘A‘, ‘B‘, ‘C‘]):

...     print i, value ...

0 A

1 B

时间: 01-17

python学习笔记(二)的相关文章

Python学习笔记<二>:列表、元组、字典

1 列表和元组 可以将列表和元组当成普通的"数组",它能保存任意数量任意类型的Python 对象.和数组一样,通过从0 开始的数字索引访问元素,但是列表和元组可以存储不同类型的对象. 列表和元组有几处重要的区别.列表元素用中括号( [ ])包裹,元素的个数及元素的值可以改变.元组元素用小括号(( ))包裹,不可以更改(尽管他们的内容可以).元组可以看成是只读的列表.通过切片运算( [ ] 和 [ : ] )可以得到子集,这一点与字符串的使用方法一样. 举例如下: >>>

python学习笔记(二)

一.版本问题 python2与python3是目前主要的两个版本. python3.0版本较之前的有很大变动,而且不向下兼容. Python 2.7作为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移.即2.7版本兼容2.x和3.0的语法 Python 2.7保持了对之前版本的全兼容,而且还包含了Python 3.0的新玩意(一些新特性需要通过"from __future__ import"来启用). 如果想要在python2.7中使用:p

python学习笔记(二) - 函数

一. 调用函数 python内置了一些数据类型转换函数,比如int()函数可以把其他数据类型转换为整形 >>> int('123') 123 >>> int(12.34) 12 >>> float('12.34') 12.34 >>> str(1.23) '1.23' >>> unicode(100) u'100' >>> bool(1) True >>> bool('') Fal

python学习笔记二:IDE环境搭建

工欲善其事,必先利其器.每个IDE都有自己的优点,适合的才是最好的. [伯乐在线]Python 非常易学,强大的编程语言.Python 包括高效高级的数据结构,提供简单且高效的面向对象编程.Python 的学习过程少不了 IDE 或者代码编辑器,或者集成的开发编辑器(IDE).这些 Python 开发工具帮助开发者加快使用 Python 开发的速度,提高效率.高效的代码编辑器或者 IDE 应该会提供插件,工具等能帮助开发者高效开发的特性.最好的 10 款 Python IDEs,这里详细介绍前两

python学习笔记二:流程控制

一.if else: #!/usr/bin/python x = int(raw_input('please input:')) if x >= 90: if x >= 95: print 'a+' else: print 'a' elif x >= 80: if x >= 85: print 'b+' else: print 'b' elif x >= 70: if x >= 75: print 'c+' else: print 'c' else: if x >

python学习笔记(二):python数据类型

上一篇博客写了python的入门和简单流程控制,这次写python的数据类型和各种数据类型的内置方法.一.数据类型是什么鬼?计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的数据类型.二.整形和浮点型整形也就是整数类型(int)的,在python3中都是int类型,没有什么long类型的,比如说存年龄.工资.成绩等等这样的数据就可以用int类型,有正

python学习笔记二:if语句及循环语句,断点,模块,pyc

if语句 注意:语句块中的内容要强制缩进,否则出错.IndentationError,缩进错误 所有代码,如果是顶级的,必须顶格写,前面不能有空格 if - : - elif - : - else: - while语句 while -: - else: - for语句 for i in range(10)--i默认0,步长默认1,最大为9 for i in range (0,2,10)--从0开始,步长为2,最大为8 for  i   in range(-): - else: - break--

Python学习笔记(二)Python语法_1

[[email protected] ~]# ipython In [1]: import platform In [2]: print platform.uname() ('Linux', 'kaibin.test1', '2.6.32-431.el6.x86_64', '#1 SMP Fri Nov 22 03:15:09 UTC 2013', 'x86_64', 'x86_64') In [3]: dir(platform)        #查看platform支持的功能:dir(plat

python学习笔记二

1.python中的几种变量 1)__x 如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问 双下划线开头的实例变量是不是一定不能从外部访问呢?其实也不是.不能直接访问__name是因为Python解释器对外把__name变量改成了_Student__name,所以,仍然可以通过_Student__name来访问__name变量 2) __x__需要注意的是,在P

python学习笔记二--列表

一.列表: 1. 任意类型对象的位置相关的有序集合. 2. 没有固定大小. 3. 对偏移量进行赋值及各种方法的调用,修改列表. 4. 列表是序列的一种. 5. 所有对字符串的序列操作对列表均适用. 二.对列表做索引,分片 三.调用内置的函数及方法 四.边界检查 五.嵌套 六.列表解析: 1. 把M里每一行的偏移量为1的元素取出来,并赋值给col2 2. 把M里每一行的偏移量为1的元素取出来并+1 把M里每一行的偏移量为1的元素取出来并取2的余数为0的元素 3.