慕课网 首发了,放在垂直领域吧。简书备份。
在python中,最基本的数据类型就是序列。序列表示一系列有序的元素,列表,元组,字符串是python最常见的序列。
序列中每一个元素都会被分配一个序号,即元素的位置,也被称为index。所有的序列都可以进行某些操作,包括索引,分片,加,减,以及检查某个元素是否属于序列的成员。
元祖
a=[1,2,3,4,5] print(a[0:len(a):2]) print(a[-1::-1]) print(a[2:])
[1, 3, 5] [5, 4, 3, 2, 1] [3, 4, 5]
a=[1,2,3,4,5]
b=['a','b']
print('id(a)=',id(a))
print('{0}+{1}={2}'.format(a,b,a+b))
print(a*2)
print('a is in b','a' in b)
id(a)= 20907592 [1, 2, 3, 4, 5]+['a', 'b']=[1, 2, 3, 4, 5, 'a', 'b'] [1, 2, 3, 4, 5, 1, 2, 3, 4, 5] a is in b True
序列还有len(),max(),min(),sum()等函数。
a=[1,2,3,4,5]
b=['a','b','c','A']
print('length(a)=',len(a))
print(' max(b)=',max(b))
print('min(a)=',min(a))
print(' sum(a)=',sum(a))
length(a)= 5 max(b)= c min(a)= 1 sum(a)= 15
reduce(f,s[,n]): reduce()函数把序列s的前2个元素作为参数传递给函数f,,返回计算结果和序列的下一个元素重新作为参数,直到序列的最后一个元素,reduce()函数的返回值是函数f的返回值。
有递归的味道。
def fact(n,m):
return n*m;
>>> import functools >>> functools.reduce(fact,range(1,6)) 120
enumerate()函数
接受一个可以迭代对象作为参数,返回一个enumerate对象,该对象由iter每个元素索引值和元素值组成的元组。
a=['a','b',2]
print(enumerate(a[0]))
for element,value in enumerate(a):
print(element,value)
0 a 1 b 2 2
zip()函数,接受任意多的序列作为参数,返回一个可以迭代的参数。
a=['a','b',2] b=[0,1,2,3] c=zip(a,b) print(list(c))
[('a', 0), ('b', 1), (2, 2)]
sort()函数和reversed()函数。
num=[3,2,68,888,11] print(sorted(num)) print(list(reversed(num)))
[2, 3, 11, 68, 888] [11, 888, 68, 2, 3]
list()函数和tuple()函数经常用于序列间的转换。
x=['a','b','c'] y=tuple(x) print(type(y)) print(y) st='123' xy=list(st) print(type(xy)) print(xy)
('a', 'b', 'c') ['1', '2', '3']
序列拆分赋值运算
a=[1,2,3.3,5.5,6.6]
z,x,c,v,b=a
print('z={},x={},c={},v={},b={}'.format(z,x,c,v,b))
z=1,x=2,c=3.3,v=5.5,b=6.6
列表是可以改变的,因此可以改变列表的内容,进行增加,删除,修改等操作。
>>> x=[6,8,9] >>> x[0]=3 >>> x [3, 8, 9] >>> del x[0] >>> x [8, 9] >>> x.index(8) 0 >>> x.append(9) >>> x [8, 9, 9] >>> x.extend([1,2,3]) >>> x [8, 9, 9, 1, 2, 3] >>> x.sort() >>> x [1, 2, 3, 8, 9, 9] >>> x.count(9) 2 >>> x.reverse() >>> x [9, 9, 8, 3, 2, 1] >>> x.pop() 1 >>> x.pop(0) 9 >>> x [9, 8, 3, 2] >>> x.insert(0,99) >>> x [99, 9, 8, 3, 2] >>> x.remove(2) >>> x [99, 9, 8, 3]
列表的解析
在一个序列的值上应用一个任意表达式,或者将其结果收集到一个新的列表并返回,它的基本形式是一个中括号包含一个for语句对一个可以迭代对象进行迭代。
>>> [i for i in range(9)] [0, 1, 2, 3, 4, 5, 6, 7, 8] >>> res=[ord(i) for i in 'abc'] >>> res [97, 98, 99] >>> [x**2 for x in range(1,7)] [1, 4, 9, 16, 25, 36]
元组和列表的区别
元组和列表一样,也是有序序列,很多情况下可以互换,很多操作类似,但是还是有区别的。
元组是不可变的类型,可以用在字典或者集合成员当做键值使用,只要不进行修改操作大多情况下使用和list差不多。
因为tuple不可变,所以没有append(),extend(),insert(),pop(),remove()等方法,也没有sort(),reverse()方法.
但是可以利用现有的tuple部分创建新的tuple
>>> x=(1,2,3) >>> y=(4,5,6) >>> x+y (1, 2, 3, 4, 5, 6)
tuple本身不可变,只是针对tuple本身,如果内部元素可以改变,则可以修改。
>>> sa=([1,1],8,9) >>> sa[0][0]=6 >>> sa ([6, 1], 8, 9)
序列的运用
def boldsort(arr):
for i in range(len(arr)-1):
for j in range(len(arr)-i-1):
if arr[j+1]
>>> boldsort([4,6,11,0,-8]) [-8, 0, 4, 6, 11]
嗯,选择,插入都在循环中说了,写了比较浪费时间。



