请选择 进入手机版 | 继续访问电脑版
楼主: jpld
1083 1

[原创博文] Python基础教程 读书笔记(2)第二章 列表和元组 [推广有奖]

  • 2关注
  • 50粉丝

讲师

2%

还不是VIP/贵宾

-

威望
0
论坛币
1289 个
通用积分
2.0033
学术水平
120 点
热心指数
120 点
信用等级
99 点
经验
1249 点
帖子
192
精华
0
在线时间
269 小时
注册时间
2009-5-29
最后登录
2021-7-19

jpld 发表于 2015-5-14 09:30:39 |显示全部楼层

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

2.1序列概览

列表和元组的主要区别在于,列表可以修改,元组则不能。也就是说如果要根据要求来添加元素,那么列表可能会更好用;而出于某些原因,序列不能修改的时候,使用元组则更为合适。使用后者的理由通常是技术性的,它与Python内部的运作方式有关。这也是内建函数可能返回元组的原因。一般来说,在几乎所有的情况下列表都可以替代元组。

编写一个列表:


>>> edward=['Edward Gumby',42]


构建如下的一个人员信息的列表也是可以的,这个列表就是你的数据库:


>>> john=['John Simith',50]


>>> database=[edward,john]


>>> database

[['Edward Gumby', 42], ['John Simith', 50]]


2.2通用序列操作


所有序列类型都可以进行某些特定的操作。这些操作包括:索引(indexing)、分片(sliceing) ,加(adding )、乘(multiplying)以及检查某个元素是否属于序列的成员(成员资格)。除此之外,Python还有计算序列长度、找出最大元素和最小元素的内建函数。


2.2.1索引


序列中的所有元素都是有编号的—从0开始递增。这些元素可以通过编号分别访问:

>>> greeting='Hello'

>>> greeting[0]

'H'

字符串字面值(就此而言,其他序列字面量亦可)能够直接使用索引,而不需要一个变量引用他们。


>>> 'Hello'[1]

'e'

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

>>> fourth=raw_input('Year:')[3]

Year: 2025

>>> fourth

'5'

实例:

#根据给定的年月日以数字形式打印出日期

>>> months=[

    'January',

    'February',

    "March",

    'April',

    'May',

    'June',

    'July',

    'Augest',

    'September',

    'October',

    'November',

    'December'

#以1一31的数字作为结尾的列表

endings=['st','nd','rd']+17*['th']\

    +['st','nd','rd']+7*['th']\

    +['st']

year=raw_input('Year:')

month=raw_input('Month(1-12:')

day=raw_input('Day(1-31):')

month_number=int(month)

day_number=int(day)

#要将月份和天数减1,以获得正确的索引

month_name=months[month_number-1]

ordinal=day+endings[day_number-1]

print month_name+''+ordinal+''+year

Year: 2015

Month(1-12:>? 5

Day(1-31):>? 13

May13th2015

2.2.2分片

与使用索引来访问单个元素类似,可以使用分片操作来访问一定范围内的元素。

>>> tag='https://d396qusza40orc.cloudfront.net/statistics'

>>> tag[23:37]

'cloudfront.net'

分片操作对于提取序列的一部分是很有用的。而编号在这里显得尤为重要。第1个索引是需要提取部分的第1个元素的编号,而最后的索引则是分片之后剩下部分的第1个元素的编号:

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

>>> numbers[3:6]

[4, 5, 6]

简而言之,分片操作的实现需要提供两个索引作为边界,第1个索引的元素是包含在分片内的,而第2个则不包含在分片内。


2.3列表

2.3.1list函数

>>> list('hello')

['h', 'e', 'l', 'l', 'o']

2.3.2基本的列表操作

1.改变列表:元素赋值

>>> x=[1,1,1]

>>> x[1]=2

>>> x

[1, 2, 1]

2.删除元素

>>> names=['alice','beth','cecil','dee-dee','earl']

>>> del names[2]

>>> names

['alice', 'beth', 'dee-dee', 'earl']

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]

2.3列表方法

1.append

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

>>> lst.append(4)

>>> lst

[1, 2, 3, 4]

2.count

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

2

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

>>> x.count(1)

2

>>> x.count([1,2])

1

3.extend

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

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

>>> a.extend(b)

>>> a

[1, 2, 3, 3, 4, 5]

>>> a=a+b效果相同

4.index

>>> knights=['we','are','the','knights','who','say','ni']

>>> knights.index('who')

4

>>> knights[4]

'who'

5.insect

>>> numbers=[1,2,3,5,6,7]

>>> numbers.insert(3,'four')

>>> numbers

[1, 2, 3, 'four', 5, 6, 7]

6.pop

移除列表中的一个元素,默认是最后一个

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

>>> x.pop()

3

>>> x

[1, 2]

7.remove

>>> x=['to','be','or','not','to','be']

>>> x.remove('be')

>>> x

['to', 'or', 'not', 'to', 'be']

8.reverse

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

>>> x.reverse()

>>> x

[3, 2, 1]

9.sort

>>> x=[4,5,3,1,7]

>>> x.sort()

>>> x

[1, 3, 4, 5, 7]


>>> x=[4,5,3,1,7]

>>> y=x[:]

>>> y.sort()

>>> x

[4, 5, 3, 1, 7]

>>> y

[1, 3, 4, 5, 7]

>>> y=x.sort()

>>> print y

None

应该是:

>>> x=[4,5,3,1,7]

>>> y=x[:]

>>> y.sort()

>>> x

[4, 5, 3, 1, 7]

>>> y

[1, 3, 4, 5, 7]

获取已排序的列表副本:

>>> x=[4,5,3,1,7]

>>> y=sorted(x)

>>> x

[4, 5, 3, 1, 7]

>>> y

[1, 3, 4, 5, 7]

10.高级排序

compare(x.y)函数会在x<y时返回负数,在x>y时返回正数,如果x=y则返回0

>>> cmp(40,33)

1

>>> cmp(33,40)

-1

>>> numbers=[5,2,9,7]

>>> numbers.sort(cmp)

>>> numbers

[2, 5, 7, 9]

2.4元组:不可变序列

如果你用逗号分隔了一些值,那么你就自动创建了元组。

>>> 1,2,3

(1, 2, 3)

>>> ()#空元组

()

2.4.1tuple函数

tuple函数的功能与list函数基本上是一样的:以一个序列作为参数并把它转换


为元组。

>>> tuple([1,2,3])

(1, 2, 3)

>>> tuple('abc')

('a', 'b', 'c')


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:python基础教程 Python基础 python 基础教程 读书笔记 读书笔记

stata SPSS
gaojianwqjk 发表于 2015-5-14 12:13:31 来自手机 |显示全部楼层
jpld 发表于 2015-5-14 09:30
2.1序列概览列表和元组的主要区别在于,列表可以修改,元组则不能。也就是说如果要根据要求来添加元素,那么 ...
:)

使用道具

您需要登录后才可以回帖 登录 | 我要注册

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2021-11-28 05:21