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 相关文章推荐
使用rst2pdf实现将sphinx生成PDF
Jun 07 Python
Python编程之黑板上排列组合,你舍得解开吗
Oct 30 Python
利用Python如何生成hash值示例详解
Dec 20 Python
详解Python if-elif-else知识点
Jun 11 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
Sep 04 Python
python训练数据时打乱训练数据与标签的两种方法小结
Nov 08 Python
python的set处理二维数组转一维数组的方法示例
May 31 Python
如何为Python终端提供持久性历史记录
Sep 03 Python
Python字符串大小写转换拼接删除空白
Sep 19 Python
python爬虫中多线程的使用详解
Sep 23 Python
python3发送request请求及查看返回结果实例
Apr 30 Python
python 等差数列末项计算方式
May 03 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
为什么那些咖啡爱好者大多看不上连锁咖啡店?
2021/03/06 咖啡文化
PHP实现重载的常用方法实例详解
2017/10/18 PHP
PHP addslashes()函数讲解
2019/02/03 PHP
又一个图片自动缩小的JS代码
2007/03/10 Javascript
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
JS表的模拟方法
2015/02/05 Javascript
深入理解JavaScript系列(34):设计模式之命令模式详解
2015/03/03 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
2015/06/01 Javascript
JS脚本实现动态给标签控件添加事件的方法
2016/06/02 Javascript
jQuery使用animate实现ul列表项相互飘动效果示例
2016/09/16 Javascript
javascript用rem来做响应式开发
2018/01/13 Javascript
微信、QQ、微博、Safari中使用js唤起App
2018/01/24 Javascript
Vue无限滑动周选择日期的组件的示例代码
2018/07/18 Javascript
Echarts之悬浮框中的数据排序问题
2018/11/08 Javascript
vue实现简单跑马灯效果
2020/05/25 Javascript
python操作xml文件示例
2014/04/07 Python
Python实现带参数与不带参数的多重继承示例
2018/01/30 Python
Python爬虫之正则表达式的使用教程详解
2018/10/25 Python
使用Python制作表情包实现换脸功能
2019/07/19 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
2019/08/17 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
python程序中的线程操作 concurrent模块使用详解
2019/09/23 Python
Python使用Tkinter实现转盘抽奖器的步骤详解
2020/01/06 Python
如何在Python 游戏中模拟引力
2020/03/27 Python
Python request中文乱码问题解决方案
2020/09/17 Python
Python结合百度语音识别实现实时翻译软件的实现
2021/01/18 Python
幼儿园长自我鉴定
2013/10/17 职场文书
擅自离岗检讨书
2014/02/11 职场文书
参观接待方案
2014/03/17 职场文书
安全生产专项整治方案
2014/05/06 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
大学推普周活动总结
2015/05/07 职场文书
《兰兰过桥》教学反思
2016/02/20 职场文书
2019商业计划书格式、范文
2019/04/24 职场文书