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获取Linux下文件版本信息、公司名和产品名的方法
Oct 05 Python
python爬取亚马逊书籍信息代码分享
Dec 09 Python
python实现BackPropagation算法
Dec 14 Python
Python爬虫工程师面试问题总结
Mar 22 Python
用python写扫雷游戏实例代码分享
May 27 Python
python获取指定字符串中重复模式最高的字符串方法
Jun 29 Python
python实现单链表中删除倒数第K个节点的方法
Sep 28 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
Jul 11 Python
详解python常用命令行选项与环境变量
Feb 20 Python
Python生成随机验证码代码实例解析
Jun 09 Python
pytorch 常用函数 max ,eq说明
Jun 28 Python
python编程项目中线上问题排查与解决
Nov 01 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
PHP模拟SQL Server的两个日期处理函数
2006/10/09 PHP
深入密码加salt原理的分析
2013/06/06 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
2016/05/07 PHP
PHP的PDO连接讲解
2019/01/24 PHP
使用Firebug对js进行断点调试的图文方法
2011/04/02 Javascript
判断客户浏览器是否支持cookie的示例代码
2013/12/23 Javascript
javascript修改IMG标签的src问题
2014/03/28 Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
2016/05/05 Javascript
JS实现动画兼容性的transition和transform实例分析
2016/12/13 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
在vue中封装可复用的组件方法
2018/03/01 Javascript
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
2019/05/20 Javascript
jquery实现加载更多"转圈圈"效果(示例代码)
2020/11/09 jQuery
[47:45]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第一场 2月26日
2021/03/11 DOTA
python创建和使用字典实例详解
2013/11/01 Python
python下MySQLdb用法实例分析
2015/06/08 Python
浅析Python的Django框架中的Memcached
2015/07/23 Python
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
django-利用session机制实现唯一登录的例子
2020/03/16 Python
pycharm专业版远程登录服务器的详细教程
2020/09/15 Python
CSS3截取字符串实例代码【推荐】
2018/06/07 HTML / CSS
HTML5 canvas基本绘图之绘制五角星
2016/06/27 HTML / CSS
巴西最大的珠宝连锁店:Vivara
2019/04/18 全球购物
群众路线教育实践活动方案
2014/02/02 职场文书
社区党务公开实施方案
2014/03/18 职场文书
运动会方队口号
2014/06/07 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
五一劳动节活动总结
2015/02/09 职场文书
2015年店长工作总结范文
2015/04/08 职场文书
2015人事行政工作总结范文
2015/05/21 职场文书
高中历史教学反思
2016/02/19 职场文书
react如何快速设置文件路径别名
2021/04/28 Javascript
Python如何利用pandas读取csv数据并绘图
2022/07/07 Python
pnpm对npm及yarn降维打击详解
2022/08/05 Javascript