python学习第二天,列表和元组

列表和元组的主要不同在于,列表可以修改,元组不可修改。

在自己编程的情况下,几乎所有情况下都可以所有列表来代替元组。例外情况是将元组用作字典键。因为字典键是不允许修改的。

列表表示:

>>>edward=['edward gumby',42]              #序列可以包含其他序列

1.1序列的操作

索引

>>>greeting=‘hello'                                     

>>>greeting[0]                                           #用负数索引时,从右开始索引,-1为最后一个元素

'h'

>>>fourth = input('year:')[3]                       #如果函数调用返回一个序列,可以直接对其执行索引

year:2005

>>>fourth

'5'

切片

可以使用切片来访问特定范围的元素

>>>tag='<a href="http://www.python.org">python web site</a>'

>>>tag[9:30]                                             #由你来提供两个索引来指定切片的边界,其中第一个索引指定的元素包含在切片内,第二个索引指定的元素不在切片内

'http://www.python.org'

>>>numbers[-3: ]                                     #从尾部开始数,可以使用负数索引,第二个索引省略意思为切片结束于末尾

[8,9,10]                                                    #同样可以省略第一个索引,或两个索引都省略

步长

>>>numbers[0:10:2]                                #切片默认步长为1,可以输入第3个参数,来设定步长,步长为2即表示每隔一个元素提取一个元素

[1,3,5,7,9]                                                #步长可以为负数,但是不可以是0,负数为从右向左提取元素,步长为负数时,第一个索引必须比第二个大

序列相加

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

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

>>>[1,2,3]+'world'                                   #不能拼接不同类型的序列

会报错

序列相乘

>>>'python'*5                                         #重复这个序列x次来创建一个新序列

'pythonpythonpythonpythonpython'

要创建长度为10的列表

>>>sequence=[None]*10

成员资格

使用in来检查特定的值是否包含在序列中,in检查是否满足指定的条件,如果满足,则返回相应的值:满足时返回True,不满足时返回False

>>>permissions = 'rw'

>>>'w' in permissions

True

len(),min(),max()分别返回序列包含的元素个数,序列中的最小值,最大值

list

不能像修改列表那样修改字符串,可以使用函数list来用字符串创建列表

>>>list('hello')                                              #任何序列都可以做为list的参数

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

给列表元素赋值(修改)

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

>>>x[1]=2

>>>x

[1,2,1]

删除元素(使用del)

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

>>>del names[2]

给切片赋值

>>>name = list('perl')

>>>name

['p','e','r','l']

>>>name[2;]=list('ar')                              #使用切片赋值可以将切片的长度替换与其不同的序列

>>>name

['p','e','a','r']

>>>name[1:1]=list('yth')                         #使用切片插入

>>>name

['p','y','t','h','e','a','r']                                #甚至可以执行不同步长的切片操作,或删除

列表方法

append

将一个对象附加到列表末尾

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

>>>lst.append(4)                                #append就地修改列表,意味着它不会返回修改后的新列表,而是直接修改旧列表

>>>lst

[1,2,3,4]

clear

就地清空列表的内容

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

>>>lst.clear()                                    #与切片 lst[:]=[]一样

>>>lst

[]

copy

复制列表                                          #不同与常规复制,常规复制只是将另一个名称关联到列表如:a=[1,2,3] b=a  要让a与b指向不同的列表,就要将b关联到a的副本

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

>>>b=a.copy()                                #与b=a[:]或b=list(a)一样,都是修改复制的a的副本

>>>b[1]=4

>>>a

[1,2,3]

count  

计算指定的元素在列表中出现了多少次

extend

将多个值同时附加到列表末尾,可以使用一个列表扩展另一个列表

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

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

>>>a.extend(b)                     #与拼接的区别是,拼接是返会一个全新的序列,extend是在原有的列表是增加,可以使用a=a+b,但是效率比extend低

>>>a

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

index

在列表中查找指定值第一次出现的索引

>>>knights=['w','a','t','a','e']

>>>knights.index('a')

1

insert

将对象插入列表

>>>knights.insert(3,'g')      #也可以使用切片来插入,但是效率也不如insert

pop

从列表删除一个元素(无指定时默认为最后一个元素),并返回这个值

pop是唯一一个既修改列表又返回一个非none值的列表方法

pop可以用来实现栈的弹出,用append来压入

remove

用来删除第一个为指定值的元素

reverse

按相反方向修改列表中的元素

sort

用于对列表就地排序,意味着对原来的列表进行修改

若要获取排序后的副本,方法是使用sorted

>>>x=[4,6,2,1,7,9]

>>>y=sorted(x)

>>>x

[4,6,2,1,7,9]

>>>y

[1.2.4.6.7.9]

高级排序

sort接受两个可选函数:key,reverse

key可以设置为一个用与排序的函数,不会直接用这个函数来判断哪个元素大,而是用它来为每个元素创建键,然后使用键来对元素进行排序

>>>x=['aardvark','abalone','acme','add','aerate']

>>>x.sort(key=len)

>>>x

['add','acme','aerate','abalone','aardbark']

元组

>>>(1,2,3)                                                  #使用原括号括起即可表示元组,也可以不加圆括号

(1,2,3)

>>>(1,)                                                      #即使元组只有一个元素,元素后面也要加逗号

tuple的工作原理与list类似,将一个序列为参数,转化为元组

猜你喜欢

转载自www.cnblogs.com/SnowyWind/p/10622812.html