前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python的元组和列表

python的元组和列表

作者头像
热心的社会主义接班人
发布2018-04-27 14:44:54
1.5K0
发布2018-04-27 14:44:54
举报
文章被收录于专栏:cscscs

慕课网 首发了,放在垂直领域吧。简书备份。

在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]

嗯,选择,插入都在循环中说了,写了比较浪费时间。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.04.22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档