Python学习笔记基本数据结构之序列类型list tuple range用法分析
作者:feesland 发布时间:2022-11-17 18:30:52
本文实例讲述了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)
其他操作,reverse
、copy
等
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程序设计有所帮助。
来源:https://www.cnblogs.com/feeland/p/4364013.html


猜你喜欢
- 如果一个应用程序需要登录,则它必须知道当前用户执行了什么操作。因此ASP.NET在展示层提供了一套自己的SESSION会话对象,而ABP则提
- 1、下载mysql-python官网地址:http://sourceforge.net/projects/mysql-python/2、安装
- 本文实例讲述了python使用socket连接远程服务器的方法。分享给大家供大家参考。具体如下:import socketprint &qu
- 目录一、 文件的操作1.1创建文件1.2写入数据1.3读数据1.4 2读数据1.5读写数据1.6删除文件1.7写入文件1.8读取图片1.9备
- 网络编程有三个要素,分别是IP地址、端口号和通信协议,那本文主要讲述的是TCP与UDP这两种通信协议,以及编程的实现。首先,我们需要了解一下
- 一般来说,造成MySQL出现中文乱码的因素主要有下列几点:1.server本身字符集设定的问题,例如还停留在latin12.table的语系
- 我们来使用background 插入flash播放器播放音乐刚刚乱试一翻搞出这个,有意思吗?请在IE6下测试运行代码框<!DOCTYP
- 现在有一id=test的下拉框,怎么拿到选中的那个值呢? 分别使用javascript原生的方法和jquery方法 <select i
- 由于Django没有象rails一样指定项目的目录结构规范,很多人都对django项目的目录结构要如何组织而感到困惑。为此我又新创建了一个开
- 写在前面今天在用爬虫及Pandas更新股票日线数据的时候发现KeyError报错,后面跟了一个DataFrame列索引,一开始以为是索引修改
- tkinter的功能是如此强大,竟然还能做翻译软件。当然是在线的,我发现有一个quicktranslate模块,可以提供在线翻译功能,相当于
- 1、yield,将函数变为 generator (生成器)例如:斐波那契数列def fib(num): a, b, c = 1,
- 最近听说一个很好玩的图灵机器人api,正好可以用它做一个微信聊天机器人,下面是实现# test.pyimport requestsimpor
- 在上篇给大家介绍了Java中正则表达式的使用和详解(上),具体内容如下所示:1.常用正则表达式规则正则表达式语法 一个或多个汉字
- 最近在做python的web开发(原谅我的多变,好东西总想都学着。。。node.js也是),不过过程中总遇到些问题,不管是web.py还是d
- 做图像识别的时候需要在图片中画出特定大小和角度的矩形框,自己写了一个函数,给定的输入是图片名称,矩形框的位置坐标,长宽和角度,直接输出画好矩
- 1、配置环境支持python2和python3On Linux, Solaris, or FreeBSD, add the /usr/loc
- 1 简介DataFrame是Python中Pandas库中的一种数据结构,它类似excel,是一种二维表。或许说它可能有点像matlab的矩
- class torch.nn.Sequential(* args)一个时序容器。Modules 会以他们传入的顺序被添加到容器中。当然,也可
- 本文实例讲述了Python使用matplotlib绘制余弦的散点图。分享给大家供大家参考,具体如下:一 代码import numpy as