Python学习笔记基本数据结构之序列类型list tuple range用法分析


Posted in Python onJune 08, 2019

本文实例讲述了Python学习笔记基本数据结构之序列类型list tuple range用法。分享给大家供大家参考,具体如下:

list 和 tuple

  • list:列表,由 [] 标识; 有序;可改变列表元素
  • tuple:元组,由 () 标识; 有序;不可改变元组元素(和list的主要区别)

list 和 tuple 的创建:

print([])               # 空list
print(["a",1,True])          # 元素类型不限
print([x for x in range(0,6)])    # 列表推导式
print(list("a"),type(list("a")))   # 强制转化
print(())               # 空tuple
print((1))              # 不是tuple
print((1,))              # 单一元素tuple 一定要加,
print(("a",1,True))          # 元素类型不限
print(tuple("a"),type(tuple("a")))  # 强制转化

空list l = []

list 用一对方括号,用','隔开里面的元素  l = [a]   l = ["a",1,True]  元素类型不限

列表推导式,如:[x for x in range(0,6)] (下方会详细介绍 range 及 列表推导式)

类型转换 list()

空tuple  t = ()

tuple 若只有一个元素时,注意表示为  t = (1,)  一定要有逗号

tuple 用一对圆括号,用','隔开里面多个的元素  t = ("a",1,True)  元素类型不限

类型转换 tuple()

range

range 可方便的生成一个等差的序列,有两种表示 range(stop) 、range(start, stop[, step]) ; 通常用在 for循环语句中

range(stop) 表示 0 到 stop(不包含stop) 等差为1 的数,如 range(4) 表示 0 1 2 3

range(start, stop[, step]) 表示 从 start 到 stop(不包含stop) 等差为step的数;step缺省为1,可设置为负数

print(type(range(4)))          # range本身就是一个type
for i in range(4):
  print(i)              # 0 1 2 3
for i in range(-1):           # 从0计数,无值
  print(i)
for i in range(4,7):          # 4 5 6
  print(i)
for i in range(2,7,2):         # 2 4 6
  print(i)
for i in range(5,2,-1):         # 5 4 3
  print(i)

序列操作

一般操作,不改变list本身

Operation Result
x in s True if an item of s is equal to x, else False
x not in s False if an item of s is equal to x, else True
s + t the concatenation of s and t
s * n or n * s n shallow copies of s concatenated
s[i] ith item of s, origin 0
s[i:j] slice of s from i to j
s[i:j:k] slice of s from i to j with step k
len(s) length of s
min(s) smallest item of s
max(s) largest item of s
s.index(x[, i[, j]]) index of the first occurrence of x in s (at or after index i and before index j)
s.count(x) total number of occurrences of x in s
s = ["a",1,True,["b"],2]    
print("a" in s)        # 判断元素存在于s
print("a" not in s)      # 判断元素不存在于s
print("b" in s)
print(1.0 in s)        # 这边不判断int float类型不同
print("1" in s)        # 这边的1为字符串
a = [1,2]
b = [2,1,0]
print(a+b)           # 序列相加
print(a*3)           # 序列乘法
s = [0,1.0,2,3,4,5,6,7,8] 
print(s[0],s[2],s[3])     # 通过下标来取出对应的元素
print(type(s[0]))      
print(type(s[1]))
print(s[2:4])         # 取出一段list
print(s[2:7:2])        # 根据步长取出一段list
print(len(s))         # list长度,即包含几个元素
sum = 0            
for i in range(0,len(s)):   # 使用for循环来取出list的每个元素
  print(s[i])
  sum += i          # 赋值的简单表达式,相当于 sum = sum + i
print(sum)           # 总和
print(min(s),max(s))      # 取最小/最大;注意元素类型间若不可比较,会报错
s = [2,3,1,2,2,3]
print(s.index(2))       # 查找对应元素第一次出现的下标
# print(s.index(4))      # 不存在该元素会报错
print(s.index(2,3))      # 从下标为3的开始找起
print(s.index(2,3,4))     # 从下标为3到下标4的阶段内找
print(s.count(2))       # 输出为2的元素的个数
print(s.count("2"))      # 找不到匹配元素,返回0

上方列出的操作方法对 tuple 也都适用,因为并不改变序列本身的元素,如

s = (2,3,1,2,2,3)
print(s[2],s[2:4],len(s),s.count(2))      # 对tuple均适用

改变序列的操作:仅对 list 适用;若对 tuple 操作,会报错;clear()copy() 是 Python 3.3 才新增的方法

Operation Result
s[i] = x item i of s is replaced by x
s[i:j] = t slice of s from i to j is replaced by the contents of the iterable t
s[i:j:k] = t the elements of s[i:j:k] are replaced by those of t
del s[i:j] same as s[i:j] = []
del s[i:j:k] removes the elements of s[i:j:k] from the list
s.pop([i]) retrieves the item at i and also removes it from s
s.remove(x) remove the first item from s where s[i] == x
s.clear() removes all items from s (same as del s[:])
s.append(x) appends x to the end of the sequence (same as s[len(s):len(s)] = [x])
s.extend(t) extends s with the contents of t (same as s[len(s):len(s)] = t)
s.insert(i, x) inserts x into s at the index given by i (same as s[i:i] = [x])
s.copy() creates a shallow copy of s (same as s[:])
s.reverse() reverses the items of s in place

list的增、删、改的操作实际都比较实用,需要熟练掌握

list元素更改

可对 list 不同的下标表示法做以下操作,一般 list 下标的操作仅作对单一元素的更改赋值,如 s[0]=1 ;对多个元素的操作见下方示例(仅供参考)

s = [0,1,2,3]
s[0] = "1"
print(s)            # 对list的某一元素赋另外的值,类型也跟随改变
s[4] = 1            # 不可超过原list的长度,会报错
s[0:3] = [2,3,4]        # 可对一段元素赋另外的值
print(s)    
s[0:3] = ["x","x"]        # 可缺少,元素个数也就相应的减少了
print(s)    
s[0:2] = ["x","x","x","x"]    # 可增加,元素个数也就相应的减加了
print(s)  
s[0] = [0,0]          # 单个元素注意,相当于赋值,把序列赋予该元素
print(s)  
s[1:2] = [0,0]        
print(s)  
s = [0,1,2,3,4,5,6,7,8]
s[1:8:2] = ["x"]*4      
# s[1:8:2] = ["x"]*3      # 这种表示方式元素个数一定需要相同,不然会报错
print(s)

list元素删除

s = [0,1,2,3,4,5,6,7,8]
del s[0:4]            # 删除对应的元素  
print(s)  
s = [0,1,2,3,4,5,6,7,8]
del s[1:8:2]           # 做删除
print(s)
s = [0,1,2,3,4,5,6,7,8]
s.pop(3)
print(s.pop(3),s)         # 做删除,并且返回该元素的值
print(s.pop(),s)         # 默认删除最后一个
s = [2,"1",1.0,1,2,1]
s.remove(1)            # 删除第一个值为 1 的元素
print(s)          
s.clear()             # 置空,Python3.3引入
print(s)

list元素增加

s = [0,1,2,3,4]
s.append(5)            # list 最后加一个元素
print(s)
s.extend([6,7])          # list 最后拼接序列
print(s)
s.extend(range(3))
print(s)
s.insert(1,["x"])         # 在1的位置插入["x"]
print(s)

其他操作,reversecopy

s = [1,2,3]
c = s.copy()          # 相当于 c = s
print(c)
c.reverse()
print(c)
s = [2,3,1,4]
s.sort()            # 排序
print(s)
# s = ["b",1,"a",True]     # 报错,必须是可比较的类型
s = ["b","a"]
s.sort()  
print(s)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python实现忽略大小写对字符串列表排序的方法
Sep 25 Python
python实现DES加密解密方法实例详解
Jun 30 Python
Python验证文件是否可读写代码分享
Dec 11 Python
python实现桌面气泡提示功能
Jul 29 Python
django之自定义软删除Model的方法
Aug 14 Python
matplotlib实现显示伪彩色图像及色度条
Dec 07 Python
解决Tensorflow 内存泄露问题
Feb 05 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
Mar 19 Python
jupyter notebook 添加kernel permission denied的操作
Apr 21 Python
Python远程linux执行命令实现
Nov 11 Python
python3 re返回形式总结
Nov 20 Python
教你怎么用Python实现多路径迷宫
Apr 29 Python
Python面向对象之类的封装操作示例
Jun 08 #Python
Python面向对象之类和实例用法分析
Jun 08 #Python
Python学习笔记之自定义函数用法详解
Jun 08 #Python
Python3基础教程之递归函数简单示例
Jun 07 #Python
Python正则表达式匹配和提取IP地址
Jun 06 #Python
Python 常用模块 re 使用方法详解
Jun 06 #Python
Python比较配置文件的方法实例详解
Jun 06 #Python
You might like
在DC的漫画和电影中,蝙蝠侠的宿敌,小丑的真名是什么?
2020/04/09 欧美动漫
php Static关键字实用方法
2010/06/04 PHP
C#静态方法与非静态方法实例分析
2014/09/22 PHP
Laravel给生产环境添加监听事件(SQL日志监听)
2017/06/19 PHP
document 和 document.all 分别什么时候用
2006/06/22 Javascript
用js生产批量批处理执行命令
2008/07/28 Javascript
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
js动态修改input输入框的type属性(实现方法解析)
2013/11/13 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
使用jquery.form.js实现图片上传的方法
2016/05/05 Javascript
jQuery tagsinput在h5邮件客户端中应用详解
2016/09/26 Javascript
10分钟掌握XML、JSON及其解析
2020/12/06 Javascript
js前端实现多图图片上传预览的两个方法(推荐)
2016/11/18 Javascript
vue下跨域设置的相关介绍
2017/08/26 Javascript
Vue-cli3简单使用(图文步骤)
2019/04/30 Javascript
javaScript中indexOf用法技巧
2019/11/26 Javascript
vue 中的 render 函数作用详解
2020/02/28 Javascript
详细分析vue响应式原理
2020/06/22 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
Python使用回溯法子集树模板解决爬楼梯问题示例
2017/09/08 Python
Python生成8位随机字符串的方法分析
2017/12/05 Python
python实现遍历文件夹修改文件后缀
2018/08/28 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
python2爬取百度贴吧指定关键字和图片代码实例
2019/08/14 Python
python 变量初始化空列表的例子
2019/11/28 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
2020/06/18 Python
佳能德国网上商店:Canon德国
2017/03/18 全球购物
allbeauty美国:英国在线美容店
2019/03/11 全球购物
本科生详细的自我评价
2013/09/19 职场文书
庆元旦广播稿
2014/02/10 职场文书
党的群众路线教育实践活动个人整改方案
2014/10/25 职场文书
2015年中秋节主持词
2015/07/30 职场文书
导游词之青岛太清宫
2019/12/13 职场文书
go web 预防跨站脚本的实现方式
2021/06/11 Golang
GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析
2021/06/15 Javascript
Android开发手册自定义Switch开关按钮控件
2022/06/10 Java/Android