python元组和列表的联系_Python 列表和元组

1、数据结构:通过某种方式组织在一起的数据元素的集合

2、在Python中,最基本的数据结构是序列(sequence),最后一个元素标记为-1,倒数第二个元素为-2,第一个元素位于最开始,索引为0

3、Python包含6种内建的序列,最常用的两种类型:列表和元组.其他的内建序列类型有字符串、Unicode字符串、buffer对象和xrange对象

4、列表和元组的主要区别在于,列表可以修改,元组则不能

ContractedBlock.gif

ExpandedBlockStart.gif

months =['January','February','March','April','May','June','July','August','September','October','November','December']

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)

month_name= months[month_number-1]

ordinal= day + endings[day_number-1]print month_name + ' ' + ordinal + '.' + year

索引示例

5、使用分片操作来访问一定范围内的元素。分片通过冒号相隔两个索引.第一个索引的元素包含在分片内,而第二个则不包含在分片内

ContractedBlock.gif

ExpandedBlockStart.gif

numbers = [1,2,3,4,5,6,7,8,9,10]print numbers[3:6]#[4,5,6]

print numbers[-3:]#[8,9,10]

url= raw_input('Please enter the URL:')

domain= url[11:-4]print "Domain name:" +domain#Please enter the URL: http://www.python.org#Domain name: python

分片示例

6、进行分片的时候,还有一个隐式参数步长(step length),如果步长为负数,即从右到左提取

7、序列相加,两种相同类型的序列才能进行连接操作

8、乘法: 用数字x乘以一个序列生成新的序列,在新的序列中,原来的序列将被重复x次

ContractedBlock.gif

ExpandedBlockStart.gif

#创建一个占有十个元素空间

sequence = [None] * 10

printsequence#[None, None, None, None, None, None, None, None, None, None]

nums= [1,2,3]print nums*4

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

乘法示例

9、为了检查一个值是否在序列中,使用in运算符.然后返回相应的值:条件为真返回Ture,条件为假返回False

ContractedBlock.gif

ExpandedBlockStart.gif

permissions = 'rw'

print 'r' inpermissionsprint 'e' inpermissions#True#False

users= ['mlh', 'foo', 'bar']

you_name_is_exist= raw_input('Enter your user name:') inusersprintyou_name_is_exist#Enter your user name: 45#False

subject= '$$$ Get rich now!! $$$'

print '$$' insubject#True

#检查用户名和PIN码

database =[

['albert', '1234'],

['dilbert','4242'],

['smith', '7524'],

['jones', '9843']

]

username= raw_input('User Name:')

pin= raw_input('PIN code:')if [username, pin] in database: print 'Access granted'

#User Name: smith#PIN code: 7524#Access granted

View Code

10、内建函数len、min和max。len函数返回序列中包含元素的数量,min函数和max函数则分别返回序列中最大和最小的元素

ContractedBlock.gif

ExpandedBlockStart.gif

#元素赋值

x = [1,1,1]

x[1] = 2

printx#[1, 2, 1]

#删除元素

del x[2]printx#[1, 2]

#分片赋值

name = list('Perl')

name[2:] = list('ar')printname#['P', 'e', 'a', 'r']#分片赋值是将原序列不等长的序列分片替换

numbers= [1,5,6]

numbers[2:3] = [2,3,4]printnumbers#[1, 5, 2, 3, 4]

#利用分片赋值删除元素

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

nums[1:4] =[]printnums#[1, 5]

分片赋值

11、列表方法

调用: 对象.方法(参数)

append方法用于在列表末尾追加新的对象(直接修改原来的列表)

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

extend方法可以在列表的末尾一次性追加另一个序列中的值

index方法用于从列表中找出某个值第一个匹配项的索引位置

insert方法用于将对象插入到列表中

pop方法会移除列表中的一个元素(默认是最后一个),并返回该元素的值.pop方法是唯一一个既能修改列表又返回元素值(处理None)的列表方法

remove方法用于移除列表中某个值的第一个匹配项

reverse方法将列表中的元素反向存放

sort方法用于在原位置对列表进行排序.sorted会返回已排序的列表副本

ContractedBlock.gif

ExpandedBlockStart.gif

aname = [1,2,3]

aname.append(4)printaname#[1, 2, 3, 4]

print ['to','at','or','on','to','in','to'].count('to')#3

a= [1,2,3]

b= [4,5,6]print a+b## [1, 2, 3, 4, 5, 6]

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

knight= ['we','are','the','knights','who','say','ni']print knight.index('who')#4

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

numbers.insert(3,'four')printnumbers#[1, 2, 3, 'four', 5, 6, 7]

x= [1,2,3,4,5]printx.pop()#5

y= ['to','be','or','on']

y.remove('to')printy#['be', 'or', 'on']

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

z.reverse()printz#[4, 5, 2, 3, 1]

m= [4,6,2,5,7,1,3,0,9]printsorted(m)printm#[0, 1, 2, 3, 4, 5, 6, 7, 9]#[4, 6, 2, 5, 7, 1, 3, 0, 9]

m.sort()printm#[0, 1, 2, 3, 4, 5, 6, 7, 9]

#len作为键函数(按元素长度排序)

n = ['aardvark','abalone','acde','add','aerate']

n.sort(key=len)printn#['add', 'acde', 'aerate', 'abalone', 'aardvark']

列表方法

12、元组与列表一样,也是一种序列.唯一的不同是元组不能修改.

创建元组的语法很简单:如果你用逗号分隔了一些值,那么你就自动创建了元组

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

元组的分片还是元组,列表的分片还是列表

元组是不可替代的:元组可以在映射(和集合的成员)中当作键使用,而列表则不行

ContractedBlock.gif

ExpandedBlockStart.gif

#元组中的元素值是不允许修改的,但是我们可以对元组进行连接组合

m = (1,2,3)

n= (4,)print m+n#(1, 2, 3, 4)

#创建空元组

tup =()#元组只包含一个元素时,需要在元素后面添加逗号

tup1 = (50,)print 3*(40+2)#126

print 3*(40+2,)#(42, 42, 42)

print tuple('abcd')#('a', 'b', 'c', 'd')

元组示例

13、tuple和list不是真正的函数,而是一种类型

14、列表的冒号操作

ContractedBlock.gif

ExpandedBlockStart.gif

## 列表操作

list1 = [9,8,7,6,5,4,3,2,1,0]print(list1[0:])#[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

print(list1[1:])#[8, 7, 6, 5, 4, 3, 2, 1, 0]

print(list1[:-1])#[9, 8, 7, 6, 5, 4, 3, 2, 1]

print(list1[3:-3])#[6, 5, 4, 3]

print(list1[::2])#[9, 7, 5, 3, 1]

print(list1[2::])#[7, 6, 5, 4, 3, 2, 1, 0]#一个冒号,两个参数表示起始位置,默认间隔为1#两个冒号,前两个参数表示起始位置,最后一个参数表示间隔

print(list1[::3])#[9, 6, 3, 0]

print(list1[::-1])#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

列表冒号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值