列表和元组

1.列表

Python内置的一种数据类型是列表:listlist是一种有序的集合,可以随时添加和删除其中的元素。

比如,列出班里所有同学的名字,就可以用一个list表示:

>>>classmates =['Michael', 'Bob', 'Tracy']

>>>classmates

['Michael','Bob', 'Tracy']

>>>classmates[0]

'Michael'

>>>classmates[-1]

'Tracy'

列表常用函数

1、成员关系 in,not in

对象 [not] in序列

2、连接操作符(+)

sequence1+sequence2

3、重复操作符(*)

sequence*int  序列重复int

int必须是一个整数,而且不能使长整数

4.切片操作符

seq[ind]获得下标为ind的元素

seq[ind1:ind2]获得下标从ind1ind2间的元素集合

5、使用步长来进行扩展切片[n:m:l]

s='abcded'

s[::-1]类似翻转

s[::2]隔一个取一个

6.列表求长:len(L)

7.列表中的最大值最小值: max(L)min(L)

max()min()函数在字符串操作里面用处不大,因为它们能对字符串做的只能是找出

串中"最大""最小"的字符(按词典序),而对列表和元组来说,它们被定义了更多的用处.比如

对只包含数字和字符串对象的列表,max()min()函数就非常有用,重申一遍,混合对象的结构

越复杂返回的结构准确性就越差

8、将字符串转化成列表:

>>>name=list('hello')

>>>name

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

9、改变列表:元素赋值

>>>L

['1','a']

>>>L[0]=2

>>>L

[2, 'a']

10、分片赋值(第一个参数是开始分片的起始位置,第二个参数是结束分片的下一个位置)

1)修改序列

>>>name = list('Perl')

>>>name = list('Perl')

>>>name[1:] = list('ython')

>>>name

['P','y', 't', 'h', 'o', 'n']

2)插入序列

>>>num=[1,5]

>>>num[1:1]=[2,3,4]

>>>num

[1, 2,3, 4, 5]

3)删除序列

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

>>>num[1:4]=[2]

>>>num

[1, 2,5]

11、添加元素 append extend

1)添加一个元素 append

>>>L.append('NI')

>>>L

[2, 'a','NI']

2)扩展extend在结尾添加多个元素

在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

函数中填写一个列表

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

>>>a.extend([4,5,6])

>>>a

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

或者填一个列表对象

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

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

>>>a.extend(b)

>>>a

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

12、删除 pop,del,remove

1)pop根据位置删除[填写序列]

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

pop(元素位置),返回删除的元素

>>>L.pop(1)

'a'

2)、删除 del语句实现

del列表[元素位置]

>>>L=[2, 'NI']

>>>del L[1]

>>>L

[2]

3)、移除 [填写对象]

remove(元素)

>>>L.remove('NI')

>>>L

13、插入

L.insert(位置,'元素')

注意,这个会改变原来元素的位置

>>>L

[2]

>>>L.insert(0,'test')

>>>L

['test',2]

14、排序

1)升序

>>>L.sort()

2)降序

反向列表中元素

>>>L.reverse()

3)关键字排序:key

长度(len)排序:按长度排序

>>>x = ['bb', 'eeeee', 'a','dddd', 'ccc']

>>>x.sort(key = len)

>>>x

['a','bb', 'ccc', 'dddd', 'eeeee']

15.索引 index

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

['a','c', 'd', 'c']

>>>L.index('c')

1

16、计数

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

>>>L

['a','c', 'd', 'c']

>>>L.count('c')

2

17filter:过滤序列

>>>filter(lambda x:x%2==0,[1,2,3,4,5,6])

[2, 4,6]

18zip:并行遍历

>>>name=['jim','tom','lili']

>>>age=[20,30,40]

>>>tel=['133','156','189']

>>>zip(name,age,tel)

[('jim',20, '133'), ('tom', 30, '156'),('lili', 40, '189')]

 

注意,如果序列长度不同时,会是下面这样的结果:

>>>name=['jim','tom','lili']

>>>age=[20,30,40]

>>>tel=['133','170']

>>>zip(name,age,tel)

[('jim',20, '133'), ('tom', 30,'170')] 即取最短的列表长度

19map:并行遍历,可接受一个function类型的参数

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

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

>>>map(None,a,b)

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

>>>map(lambda x,y:x*y,a,b) 实现了两个列表相乘

[2, 12,30]

 

如果序列长度不同时,会补上一个None

20reduce:每次取两项归并

>>>l=range(1,101)

>>>l

[1, 2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,25, 26, 27, 28, 29, 30, 31, 32, 33,34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,45, 46, 47, 48, 49, 50, 51, 52, 53,54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,65, 66, 67, 68, 69, 70, 71, 72, 73,74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,85, 86, 87, 88, 89, 90, 91, 92, 93,94, 95, 96, 97, 98, 99, 100]

>>>reduce(lambda x,y:x+y,l)

5050

 2.元组

Python中的另一种有序列表叫元组:tupletuplelist非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字:

>>>classmates = ('Michael', 'Bob', 'Tracy')

现在,classmates这个tuple不能变了,它也没有append()insert()这样的方法。其他获取元素的方法和list是一样的,可以正常地使用classmates[0]classmates[-1],但不能赋值成另外的元素。

不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple

tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来,比如:

>>>t = (1, 2)

>>>t

(1, 2)

如果要定义一个空的tuple,可以写成()

>>>t = ()

>>>t

()

只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:

>>>t = (1,)

>>>t

(1,)

Python在显示只有1个元素的tuple时,也会加一个逗号,,以免你误解成数学计算意义上的括号。

元组的对象和序列类型操作符还有内建函数跟列表的完全一样.你仍然可以对元组进行切

片操作,合并操作,以及多次拷贝一个元组,还可以检查一个对象是否属于一个元组,进行元组之间的比较等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值