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

编程 AnthonyZhai 10个月前 (07-26) 374次浏览 已收录 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 回复