Python学习笔记–容器的使用1 : list与tuple

编程 AnthonyZhai 4个月前 (07-26) 149次浏览 已收录 2个评论 扫描二维码

本文整理了列表,元组用法,从构造方法增删改查将一一介绍介绍。

基本顺序存储结构–listtuple

在介绍listtuple之前,首先列出常见的顺序操作和可变序列类型的操作。其中下表展示的是两个类型共有的方法。

操作 结果
x in s/x not in s 若s中(不)含有x则返回True,否则返回False
s+t 拼接s和t
s*n/n*s 返回s重复n次的结果,其中n为int类型
s[i] 返回索引为i的元素
s[i:j[:k]] 返回从s[i]~s[j-1],步长为k的切片,k默认为1
len(s) 求元素个数
min(s) 求最小元素
max(s) 求最大元素
s.index(x[,i[,j]]) 返回s[i]~s[j-1]中第一个值为x的元素的索引,i,j默认为0,-1
s.count(x) 统计x的数目

由于元组不能对元素进行修改,因此上述表格是两个类型共有的方法。接下来介绍只有列表才有的可变类型操作方法。

操作 结果
s[i]=x 赋值操作
s[i:j[:k]]=t 将s[i]~s[j-1]且步长为k的元素都赋值为t,k默认为1,t为[]可表示删除,i等于j时可表示插入
del s[i:j[:k]] 以上述规则进行删除
s.appned(x) 在尾部插入,相当于s.insert(-1,x)
s.clear() 清空所有元素
s.copy() 浅拷贝s
s.extend(t)/s+=t 在尾部插入一组元素
s.insert(i,x) 在i处插入x,相当于s[i:i]=x
s.pop([i]) 默认删除尾部元素,否则删除i处元素
s.remove(x) 删除第一个等于x的元素
s.reverse() 列表反转

list构造方法

Python提供了数种构造列表的方法,大概可分为三类:
1、使用方括号([ ])括起来的数值或字符串常量

# [] empty <a href="http://code4u.cn/archives/tag/list" title="查看更多关于list的文章" target="_blank">list</a>
<a href="http://code4u.cn/archives/tag/list" title="查看更多关于list的文章" target="_blank">list</a>_a=[]
# [a],[a,b,c] using commas to separate items
<a href="http://code4u.cn/archives/tag/list" title="查看更多关于list的文章" target="_blank">list</a>_b=['i','love','China',666]

2、列表生成式 [x in for x in range]

# list comprehension: [x for x in iterable]
list_c=[i for i in range(10)]

3、利用list类提供的构造函数list()和list(iterable)

# list()
list_d=list('i love python')  
#['i', ' ', 'l', 'o', 'v', 'e', ' ', 'p', 'y', 't', 'h', 'o', 'n']
# list(iterable)
list_e=list(range(10))
注意使用[字符串常量]和list(字符串常量)的区别:前者将整个字符串常量作为一个元素存入列表,而后者则是将字符串中每个字符单独作为元素存入列表。

list sort方法

除了上述list和tuple共有的方法以及list单独的方法外,这里再介绍一个list方法,既然是列表,那么就必须要有排序方法。Python为我们提供了sort方法。来看一下sort方法的定义:
sort(*, key=None, reverse=False)
这里需要介绍一下,在Python里函数参数里如果包含*,且*后面跟随一个或几个有名称的参数,那么这样的参数为命名关键字参数,即在传入参数的时候通过关键字名称对参数进行匹配,但可以缺省,因此上述函数只有两个参数。
上述的sort方法中,key表示使用某种比较函数对列表内元素进行排序,reverse则可以选择是否将排序结果逆序。
以下是该方法的几种实例:

# list sort
print('Before sort:',list_e)
list_e.sort(reverse=True)
print(list_e)

print('Before sort:',list_e)
list_e.sort(key=int)
print(list_e)

list_f=['3','11','255','127','-1']
list_f.sort(key= len and int)
print(list_f)

结果如图
sort方法排序结果

tuple构造方法

tuple是不可变的,如同其可变的兄弟list,tuple也有数种构造方法,基本上可以分为两类:
1、用小括号()括起或直接用,分隔多个元素

# () empty tuple
tuple_a=()
# a, (a,) a singleton tuple
tuple_b=('a',)   #this is the way to construct a singleton tuple,equals 
tuple_b='a',
# a,b,c (a,b,c) using commas separate items
tuple_c=1,2,3
tuple_c=(1,2,3)

容易疏忽的一点:在只用一个元素声明元组时,加小括号()时,为了不产生歧义(即小括号有优先计算的含义且此时只有一个元素,若不加以区分,那么其结果将会是声明一个与右值对应类型的变量,该变量就不是元组类型了),在其后面加一个逗号,表示生成元组类型,不加括号时道理一样。

2、使用tuple()或tuple(iterable)构造方法

# tuple(iterable)
tuple_d=tuple(range(5))
tuple_d=tuple([i for i in range(5)])
tuple_d=tuple([0,1,2,3,4])
# tuple()
tuple_a=tuple()

可变的tuple

廖雪峰老师的网站上看到这么一条,既然tuple是不可变的,那么怎么可以有可变的tuple。
其原理是这样的,tuple的不可变是指其元素内容不可变,在tuple元素为list对象的情况下,可以通过修改list对象的内容从而间接改变tuple所呈现出的内容,事实上tuple的元素依然还是不变的。

Github源码

Python" target="_blank" rel="nofollow">Github源码下载
“最初的梦想”版权所有丨如未注明 , 均为原创丨若有侵权,请邮件联系留言给我
转载请注明原文链接: Python学习笔记–容器的使用1 : list与tuple
喜欢 (0)
[使用支付宝或微信扫码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(2)个小伙伴在吐槽
  1. 当时学C 语言的时候就放弃了 现在是全部还给老师了
    piwu2017-07-27 22:42 回复