Chinaunix首页 | 论坛 | 博客
  • 博客访问: 246929
  • 博文数量: 40
  • 博客积分: 713
  • 博客等级: 军士长
  • 技术积分: 437
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-06 19:16
个人简介

努力不一定成功但放弃就一定失败

文章分类

全部博文(40)

文章存档

2012年(32)

2011年(8)

分类: Python/Ruby

2012-11-07 15:58:58

本文转自:http://blog.sina.com.cn/s/blog_4b5039210100e9yd.html


Python的数据访问模型:直接存取 ,序列 ,映射

对非容器类都可以直接存取,所有的数值类型归为此类。

序列类型是指容器内的元素从0开始的索引顺序访问,一次可以访问一个或者多个元素。  字符串列表元组归到次类

映射类型和序列类型不同之处,它使用的索引和顺序的数字偏移量不同,它的元素无序存放,通过唯一的key来访问。 字典就是这种类型。

 

 

下面要说的字符串(strings),列表(lists),元组(tuples),我们可以统称为序列。

序列有着相同的访问模式:它的每一个元素都可以通过指定一个偏移量的方式得到,而要想一次得到多个元素,我们可以使用切片,下表偏移量从0开始,总元素数减1结束。

 

下面举几个例子,先看看什么事字符串,列表,元组。

 

字符串:
>>> a = 'Hello Python!'

>>> a

'Hello Python!'

>>> b = "This is 'Python'"

>>> b

"This is 'Python'"

>>> c = 'This is "Python"'

>>> c

'This is "Python"'

>>>

 

列表:

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

>>> a

[1, 2, 3, 4, 5]

>>> b = [1, 'a', 2.5, 2+3j, "this is python list"]

>>> b

[1, 'a', 2.5, (2+3j), 'this is python list']

>>>

 

元组:

>>> a = (1, 3, 5, 7)

>>> a

(1, 3, 5, 7)

>>> a = ('a',2)

>>> a

('a', 2)

>>>

 

 

下面看一下序列通用的几个操作符:

1 连接操作符(+)  这个操作符允许我们把一个序列和另一个相同的序列做链接。

Sequence1+sequence2  结果是包含两个原序列内容的新序列。

 

>>> a = 'this is '

>>> b = 'Python'

>>> a+b

'this is Python'

>>>

 

2 重复操作符(*)

当你需要一个序列的多份拷贝时,重复操作符非常有用。

Sequence * copies_int

Copies_int必须为整型。

 

>>> a

'this is Python'

>>> a*3

'this is Pythonthis is Pythonthis is Python'

>>>

 

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

>>> b*3

[1, 2, 3, 1, 2, 3, 1, 2, 3]

>>>

 

 

3 切片操作符 [ ] [:] [: : ]

切片操作符应该是由最简单的取单个元素的操作扩展而来的。通常sequence[n]代表取出序列中第n+1个元素(因为元素下标从0开始)

>>> a = 'Python'

>>> a[2]

't'

>>> b = [1, 2, 3, 4]

>>> b[2]

3

>>> c = (1, 2, 3)

>>> c[2]

3

>>>

当中括号里面有个:的时候,代表冒号两边的数字规定了两个位置,我们把处于这个位置之中的所有元素取了出来。如果冒号两边什么都没有,代表取出所有元素,如果两边有数,例如sequence[m:n] 就是代表取出从下标为m的元素到下标为n-1的所有元素。如果中括号里两个冒号,那么两个冒号后面的数代表步长,就是隔几个元素取一次。下面一字符串为例详细说明。(其他的序列操作类似)

>>> a = 'Python'

>>> a[1]

'y'

>>> a[:]

'Python'

>>> a[1:4]

'yth'

>>> a = '10001000100010001'

>>> a[0:17:4]

'11111'

>>>

另外切片支持负数操作。比如

>>> a = 'Python'

>>> a[-1]

'n'

>>> a[-2]

'o'

>>> a[-6]

'P'

>>>

由此我们就可以很随意的取元素了。但是注意一点,平时我们不加步长,是因为我们默认是顺序取,并且步长为1,假如我们要倒着取,步长必须为负数才行,否则取的不正确。

>>> a = 'Python'

>>> a[-2:-4]

''                   这是错误的

>>> a[-4:-2]

'th'

>>> a[-2:-4:-1]

'oh'

>>> a[::-1]

'nohtyP'

>>>

4 成员操作符( in , not in )

 

>>> a = 'Python'

>>> 'p' in a

False

>>> 'y' in a

True

>>> b = [1, 2, 3, 4]

>>> 1 in b

True

>>> 5 in b

False

>>>

 

序列的一些常用的公用函数:

1 len() 获得序列的长度

 

>>> a = 'ddddddd'

>>> b = [1, 3, 4, 4]

>>> c = (1,3,4,4)

>>> len(a)

7

>>> len(b)

4

>>> len(c)

4

>>>

得出一点结论,Python字符串和C字符串不同的地方,Python字符串不会以空字符结尾

 

2 max() and min()  获得序列中最大和最小元素

 

>>> a = 'abcdefg'

>>> b = [1, 3, 5, 8]

>>> c = (2, 5, 1, 0)

>>> d = ['a',3,45,9]

>>> max(a)

'g'

>>> max(d)

'a'

>>> min(b)

1

>>> min(c)

0

>>>

 

 

下面接着看看标准内建函数:

1 type(object)  接受一个对象作为参数,并返回它的类型。

 

>>type(2)

>>

>>type(‘a’)

>>

 

2 cmp()  比较大小

 

>>> a = 4

>>> b = 8

>>> cmp(a,b)

-1

>>> cmp(b,a)

1

>>> a = 3

>>> b = 3

>>> cmp(a,b)

0

>>> a = 'lmn'

>>> b = 'abc'

>>> cmp(a,b)

1

>>>

 

3 str()  和repr()

 

>>> str(4.53-2j)

'(4.53-2j)'

>>> str(1)

'1'

>>> str([1, 3, 4, 5])

'[1, 3, 4, 5]'

>>> repr([1, 3, 4, 5])

'[1, 3, 4, 5]'

>>> '[1, 3, 4, 5]'

'[1, 3, 4, 5]'

阅读(2747) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

最大行业软件2012-11-16 09:34:51

Oasys.Pile.V19.0
Oasys.Pilset.V19.1
Oasys.Safe.V19
Oasys.Slope.V19
Oasys.Xdisp.V19

Plaxis V8.5
Plaxis 3D Foundation V1.6
PLAXIS_3D_TUNNEL_V1.2
Plaxis.2D.V9.02.612
UDEC31 岩土分析软件
Z_soil2D V6.13 岩土分析软件
代尔夫特(DELFT)岩土所计算软件
DIGITAL_CANAL系列软件
LEAP_SOFTWARE_PRESTO_V8.6.1
LEAP_SOFTWARE_RC_PIER_V4.01桥梁工程软件
LEAP_SOFTWARe_LEAP_BRIDGE_V6.0
LEAP_SOFTWARE系列软件
SAM-LEAP5.V5.10D 桥梁设计