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 相关文章推荐
Windows下为Python安装Matplotlib模块
Nov 06 Python
Python字符串、元组、列表、字典互相转换的方法
Jan 23 Python
python爬虫实战之最简单的网页爬虫教程
Aug 13 Python
python 函数传参之传值还是传引用的分析
Sep 07 Python
django定期执行任务(实例讲解)
Nov 03 Python
pandas进行数据的交集与并集方式的数据合并方法
Jun 27 Python
Python3的unicode编码转换成中文的问题及解决方案
Dec 10 Python
Python输出指定字符串的方法
Feb 06 Python
解决tensorflow/keras时出现数组维度不匹配问题
Jun 29 Python
python学习笔记之多进程
Aug 06 Python
Python中Selenium模块的使用详解
Oct 09 Python
python函数指定默认值的实例讲解
Mar 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
PHP的FTP学习(四)
2006/10/09 PHP
php eval函数用法 PHP中eval()函数小技巧
2012/10/31 PHP
回帖脱衣服的图片实现代码
2014/02/15 PHP
ThinkPHP多表联合查询的常用方法
2020/03/24 PHP
php无限极分类递归排序实现方法
2014/11/11 PHP
PHP7匿名类用法分析
2016/09/26 PHP
浅谈Laravel中的三种中间件的作用
2019/10/13 PHP
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
2013/11/15 Javascript
我的Node.js学习之路(二)NPM模块管理
2014/07/06 Javascript
JQuery页面地址处理插件jqURL详解
2015/05/03 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
Node.js 日志处理模块log4js
2016/08/28 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
新手简单了解vue
2019/05/29 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
[01:09:20]NB vs NAVI Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
Python中处理字符串之isalpha()方法的使用
2015/05/18 Python
Python在不同目录下导入模块的实现方法
2017/10/27 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
Python使用zip合并相邻列表项的方法示例
2018/03/17 Python
利用pandas将numpy数组导出生成excel的实例
2018/06/14 Python
使用Python获取并处理IP的类型及格式方法
2018/11/01 Python
Python3 安装PyQt5及exe打包图文教程
2019/01/08 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
2019/08/20 Python
Python3 翻转二叉树的实现
2019/09/30 Python
python实现提取COCO,VOC数据集中特定的类
2020/03/10 Python
Python celery原理及运行流程解析
2020/06/13 Python
关于canvas绘制模糊问题的解决方法
2019/09/24 HTML / CSS
保密工作实施方案
2014/02/24 职场文书
优秀学生干部先进事迹材料
2014/05/26 职场文书
2014个人四风对照检查材料思想汇报
2014/09/18 职场文书
会议室管理制度范本
2015/08/06 职场文书
入团申请书格式
2019/06/20 职场文书
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python