1.列表
Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。
比如,列出班里所有同学的名字,就可以用一个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]获得下标从ind1到ind2间的元素集合
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
17、filter:过滤序列
>>>filter(lambda x:x%2==0,[1,2,3,4,5,6])
[2, 4,6]
18、zip:并行遍历
>>>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')] 即取最短的列表长度
19、map:并行遍历,可接受一个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
20、reduce:每次取两项归并
>>>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中的另一种有序列表叫元组:tuple。tuple和list非常类似,但是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时,也会加一个逗号,,以免你误解成数学计算意义上的括号。
元组的对象和序列类型操作符还有内建函数跟列表的完全一样.你仍然可以对元组进行切
片操作,合并操作,以及多次拷贝一个元组,还可以检查一个对象是否属于一个元组,进行元组之间的比较等