python学习笔记(二)

     数据结构:是通过某种方式组织在一起的数据元素的集合。这些数据元素可以使数字或者字符,甚至可以是其他数据结构。在python中,最基本的数据结构是序列。序列中的每个元素被分配一个序号---即元素的位置,也称为索引,第一个索引是0,第二个是1,以此类推。

     python包含6种内建的序列:列表和元组,字符串,Unicode字符串、buffer对象和xrange对象。列表和元组的主要区别在于,列表可以修改,元组则不能。

1.序列可以用于表示包含某种信息,也可以包含其他序列

>>> yuan=['yuanshi',42]
>>> ban=['banzang',34]
>>> database=[yuan,ban]
>>> database
[ ['yuanshi', 42], ['banzang', 34] ]

2.可以进行某些特定的操作:索引、分片、家、乘以及检查某个元素是否属于序列的成员。除此之外,还有计算序列长度、找出最大元素和最小元素的内建函数。

2.1   索引

从左至右,从0开始递增

>>> 'hello'[1]
'e'

从右至左,从-1开始递减
>>> '2005'[-1]
'5'

如果一个函数调用返回一个序列,那么可以直接对返回结果进行索引操作

>>> fourth=raw_input('year: ')[3]
year: 2016
>>> fourth
'6'

2.2   分片

与使用索引来访问某个元素类似,可以使用分片操作来访问一定范围内的元素。分片通过冒号相隔的两个索引来实现。

需要访问最后2个元素:

>>> numbers=[1,2,3,4,5,6,7,8,9]
>>> numbers[ :2]
[1, 2]

分片所得部分包括序列结尾的元素:
>>> numbers[5: ]
[6, 7, 8, 9]

从编号2到分片之后剩下部分的第1个元素的编号为5的元素:
>>> numbers[3:5]
[4, 5]

复制整个序列:
>>> numbers[ : ]
[1, 2, 3, 4, 5, 6, 7, 8, 9]

更大的步长(步长是1---分片操作就是按照这个步长逐个遍历序列的元素,然后返回开始和结束点之间的所有元素)
>>> numbers[0:10:1]
[1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> numbers[2:5:2]
[3, 5]

步长不能为0,但是可以使负数,即从右至左提取元素:

>>> numbers[8:3:-1]
[9, 8, 7, 6, 5]

>>> numbers[0:10:-2]
[ ]

2.3 序列相加

>>> [1,2,3]+[4,5,6]
[1, 2, 3, 4, 5, 6]

>>> 'hello,'+'world!'
'hello,world!'
列表和字符串无法连接在一起,两种相同类型的序列才能进行连接操作。

>>> [1,2,3]+'world!'
Traceback (most recent call last):
  File "<pyshell#36>", line 1, in <module>
    [1,2,3]+'world!'
TypeError: can only concatenate list (not "str") to list

2.4 乘法

>>> 'python'*5
'pythonpythonpythonpythonpython'

>>> [13]*5
 [13, 13, 13, 13, 13]

初始化

>>> sequence=[None]*10
>>> sequence
[None, None, None, None, None, None, None, None, None, None]

2.5成员资格

为了检查一个值是否在序列中,可以用in运算符。检查某个条件是否为真,然后返回相应的值:条件为真返回TRUE,为假返回false。

>>> user=['alice','may','jake']
>>> raw_input('enter your name: ')in user
enter your name: alice
True

>>> database=[ ]
>>> yuan=['yuanshi',42]
>>> ban=['banzang',34]
>>> database=[yuan,ban]
>>> database
[ ['yuanshi', 42], ['banzang', 34] ]

2.6长度、最大值、最小值

>>> numbers=[100,35,489]
>>> len(numbers)
3
>>> max(numbers)
489
>>> min(numbers)
35
>>> max(1,6)
6

3.基本的列表操作

3.1改变列表:元素赋值

>>> x=[1,2,1]
>>> x[0]=3
>>> x
[3, 2, 1]

3.2删除元素:del

>>> del x[2]
>>> x
[3, 2]

3.3分片赋值

>>> name=list('perl')
>>> name
['p', 'e', 'r', 'l']
>>> name[2: ]=list('ar')
>>> name
['p', 'e', 'a', 'r']

一次一个的赋值:

>>> name=list('perl')
>>> name[1:]=list('ython')
>>> name
['p', 'y', 't', 'h', 'o', 'n']
在不需要替换任何原有元素的情况下插入新的元素:

>>> numbers=[1,5]
>>> numbers[1:1]=[2,3,4]
>>> numbers
[1, 2, 3, 4, 5]

利用分片赋值来删除元素:

>>> numbers=[1,2,3,4,5]
>>> numbers[1:4]=[]
>>> numbers
[1, 5]

4.列表方法

 方法是一个与某些对象有紧密联系的函数,对象可能是列表、数字,也可能是字符串或者其他类型的对象。一般来说,方法可以这样进行调用:

对象.方法(参数)

4.1 append:用于在列表末尾追加新的对象

>>> lst=[1,2,3]

>>> lst.append(4)

>>> lst
[1, 2, 3, 4]

4.2 count:统计某个元素在列表中出现的次数

>>> ['to','be','or','not','to','be'].count('be')
2

4.3 extend:在列表的末尾一次性的追加另一个列表中的多个值。新列表扩展原有的列表

>>> a=[1,2,3]
>>> b=[4,5,6]

>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]

4.4 index:从列表中找出某个值第一个匹配项的索引位置

>>> songs=['sing','the','song','is','so','happy']
>>> songs.index('song')
2

4.5 insert:将对象插入到列表中

>>> numbers=[1,2,4,5,6]
>>> numbers.insert(2,'three')
>>> numbers
[1, 2, 'three', 4, 5, 6]

4.6 pop:移除列表中的一个元素(默认是最后一个),并且返回该元素的值

>>> x=[1,2,3]
>>> x.pop()
3
>>> x
[1, 2]
>>> x.pop(0)
1
>>> x
[2]

4.7 remove:移除列表中某个值的第一个匹配项

>>> x=['to','be','or','not','to','be']
>>> x.remove('be')
>>> x
['to', 'or', 'not', 'to', 'be']

4.8 reverse:列表中的元素方向存放

>>> x=[1,2,3]
>>> x.reverse()
>>> x
[3, 2, 1]

4.9 sort:在原位置对列表进行排序

>>> x=[4,7,1,3,5,9]
>>> x.sort()
>>> x
[1, 3, 4, 5, 7, 9]

高级排序:按照特定的方式进行排序(而不是sort函数默认的方式,即更具python的默认排序规则按升序排列元素)

compare(x,y)函数在x<y时返回负数,在x>y时返回正数,x=y时返回0

>>> cmp(23,24)
-1
>>> cmp(23,22)
1
>>> cmp(23,23)
0

5.元组:不可变序列

创建元组:用逗号分割了一些值

>>> 1,2,3
(1, 2, 3)
>>> (1,2,3)

(1, 2, 3)

>>> ( )
( )

实现一个值的元组:必须加个逗号,即使只有一个值

>>> 23,
(23,)
>>> (23,)

(,23,)

5.1 tuple函数:以一个序列作为参数并把它转换为元组。如果参数就是元组,那么该参数就会被原样返回

>>> tuple([1,2,3])
(1, 2, 3)
>>> tuple('abc')
('a', 'b', 'c')
>>> tuple((1,2,3))
(1, 2, 3)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值