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中input和raw_input的一点区别
Oct 21 Python
Python描述器descriptor详解
Feb 03 Python
django模板语法学习之include示例详解
Dec 17 Python
python 创建一个空dataframe 然后添加行数据的实例
Jun 07 Python
python 剪切移动文件的实现代码
Aug 02 Python
使用python判断jpeg图片的完整性实例
Jun 10 Python
对pyqt5之menu和action的使用详解
Jun 20 Python
Python Pandas 获取列匹配特定值的行的索引问题
Jul 01 Python
Django静态文件加载失败解决方案
Aug 26 Python
Python hashlib模块的使用示例
Oct 09 Python
Pycharm安装Qt Design快捷工具的详细教程
Nov 18 Python
用Python制作音乐海报
Jan 26 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
各种战术和打法的原创者
2020/03/04 星际争霸
安装APACHE
2007/01/15 PHP
ThinkPHP3.1数据CURD操作快速入门
2014/06/19 PHP
php采用file_get_contents代替使用curl实例
2014/11/07 PHP
PHP使用file_get_content设置头信息的方法
2016/02/14 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
php实现的SSO单点登录系统接入功能示例分析
2016/10/12 PHP
PHP多种序列化/反序列化的方法详解
2017/06/23 PHP
javascript中callee与caller的用法和应用场景
2010/12/08 Javascript
使用Firebug对js进行断点调试的图文方法
2011/04/02 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
javascript的变量、传值、传址、参数之间关系
2015/07/26 Javascript
jQuery easyUI datagrid 增加求和统计行的实现代码
2016/06/01 Javascript
AngularJS1.X学习笔记2-数据绑定详解
2017/04/01 Javascript
Vue框架中正确引入JS库的方法介绍
2017/07/30 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
vue生命周期和react生命周期对比【推荐】
2018/09/19 Javascript
关于RxJS Subject的学习笔记
2018/12/05 Javascript
Vue中图片Src使用变量的方法
2019/10/30 Javascript
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
关于小程序优化的一些建议(小结)
2020/12/10 Javascript
[40:16]TFT vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python高手之路python处理excel文件(方法汇总)
2016/01/07 Python
python实现m3u8格式转换为mp4视频格式
2018/02/28 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
2019/01/07 Python
Python3.8对可迭代解包的改进及用法详解
2019/10/15 Python
python使用HTMLTestRunner导出饼图分析报告的方法
2019/12/30 Python
Python实现投影法分割图像示例(二)
2020/01/17 Python
django API 中接口的互相调用实例
2020/04/01 Python
完美解决pycharm 不显示代码提示问题
2020/06/02 Python
python如何删除文件、目录
2020/06/23 Python
企业统计员岗位职责
2013/12/13 职场文书
《植物妈妈有办法》教学反思
2014/02/25 职场文书
人力资源经理的岗位职责范本
2014/02/28 职场文书
护士医德医风自我评价
2014/09/15 职场文书
Python爬取英雄联盟MSI直播间弹幕并生成词云图
2021/06/01 Python