慕课网 首发了,放在垂直领域吧。简书备份。
在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)
<enumerate object at 0x018154B8>
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)
<class 'tuple'>
('a', 'b', 'c')
<class 'list'>
['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]<arr[j]:
arr[j+1],arr[j]=arr[j],arr[j+1]
return arr
>>> boldsort([4,6,11,0,-8])
[-8, 0, 4, 6, 11]
嗯,选择,插入都在循环中说了,写了比较浪费时间。
共同学习,写下你的评论
评论加载中...
作者其他优质文章