python笔记(1)--序列(列表 元组 range)
一、序列分类
1、可变序列:list
2、不可变序列:tuple,range
二、序列公共操作方法
1、操作和返回值
其中s和t代表同类型序列;n,i,j,k为整数;x为任意类型。
| 序号 | 操作 | 结果 |
| 1 | x in s |
若序列s中包含x元素则返回True,否则返回False |
| 2 | x not in s |
若序列s中不包含x元素则返回True,否则返回False |
| 3 | s + t | s和t拼接在一起 |
| 4 | s*n(或n*s) | 将s重复n次 |
| 5 | s[i] |
s中下标为i的元素(下标从0开始) |
| 6 | s[i:j] |
s中下标从i到j-1的元素集合(下标从0开始) |
| 7 | s[i:j:k] |
s中下标从i到j-1且间隔为K的元素集合(下标从0开始) |
| 8 | len(s) | s中元素个数 |
| 9 | min(s) | s中最小的元素 |
| 10 | max(s) | s中最大的元素 |
| 11 | s.index(x[,i[,j]]) |
s中首次出现x的下标(i,j为下标范围限制) |
| 12 | s.count(x) | s中x的总个数 |
2、实例
2.1、x in s
s = [1,2,[3,4],'g']
x = 'g'
a = [3,4]
b = 5
print(x in s,a in s,b in s)
Ture Ture False
2.2、x not in s
s = [1,2,[3,4],'g']
x = 'g'
a = [3,4]
b = 5
print(x in s,a in s,b not in s)
True True True
2.3、s + t
s = [1,2,[3,4],'g']
t = ['',6]
w = s + t
print(w)
[1, 2, [3, 4], 'g', '', 6]
当t与s类型不一致时会抛出TypeError异常
s = range(2,9)
t = [1,3]
w = s + t
print(w)
Traceback (most recent call last):
File "E:/pythoncode/新建文件夹/sf.py", line 3, in <module>
w = s + t
TypeError: unsupported operand type(s) for +: 'range' and 'list'
2.4、s*n(或n*s)
s = ['a',3,4]
n = 3
w = s*n
print(w)
['a', 3, 4, 'a', 3, 4, 'a', 3, 4]
当n小于或等于0时,s*n是空序列
s = ('a',3,4)
n = -1
w = s*n
print(w)
()
2.5、s[i]
s = ['a',3,4]
print(s[0],s[2])
a 4
当i小于0时,表示下标为len(s)+i的元素,即倒数第|i|个
s = ('a',3,4)
print(s[-1],s[-3])
4 a
2.6、s[i:j]
s = ['a',1,2,3,4]
w = s[1:3]
t = s[1:-1]
print(w,t)
[1, 2] [1, 2, 3]
当i,j省略时代表s本身
s = ['a',1,2,3,4]
w = s[:]
print(w)
['a', 1, 2, 3, 4]
2.7、s[i:j:k]
s = ['a',1,2,3,4,5,6,7,8,9]
w = s[1:7:2]
t = s[::-1]#将s中元素倒序装入t中,注意s本身不变
print(w,t)
[1, 3, 5] [9, 8, 7, 6, 5, 4, 3, 2, 1, 'a']
2.8、len(s)
s = ['a',1,2,3,4]
print(len(s))
5
2.9、min(s)
s = [1,2,3,4]
print(min(s))
1
2.10、max(s)
s = [1,2,3,4]
print(max(s))
4
使用min(s)和max(s)函数时,序列s中元素类型必须一致,否则会抛出TypeError异常
s = [1,2,3,'']
print(min(s))
Traceback (most recent call last):
File "E:/pythoncode/新建文件夹/sf.py", line 2, in <module>
print(min(s))
TypeError: '<' not supported between instances of 'str' and 'int'
2.11、s.index(x[,i[,j]])
s = [1,2,3,4,1,2,3,1,2,9]
print(s.index(1),s.index(2,2),s.index(2,2,10))
0 5 5
2.12、s.count(x)
s = [1,2,3,4,1,2,3,1,2,9]
print(s.count(1))
3
三、可变序列公共操作方法
1、操作和返回值
其中s为可变序列,t为可迭代对象;n,i,j,k为整数;x为任意类型。
| 序号 | 操作 | 结果 |
| 1 | s[i] = x | 用x替换s中编号为i的元素, |
| 2 | s[i:j] = t | 用t替换s中编号从i到j-1的元素 |
| 3 | del s[i:j] |
删除掉s中编号从i到j-1的元素,相当于s[i:j] = [] |
| 4 | s[i:j:k] = t |
s[i:j:k]对应的元素用t中元素代替,t中元素个数必须和切片中元素个数相同 |
| 5 | del s[i:j:k] | 删除切片s[i:j:k]对应的元素 |
| 6 | s.append(x) | 在s尾部添加x,相当于s[len(s):len(s)] = [x] |
| 7 | s.clear() | 删除s中所有元素,相当于del s[:],s[:] = [] |
| 8 | s.copy() | 复制s中所有元素,相当于s[:] |
| 9 | s.extend(t) or s += t | 用迭代对象t来扩展s,相当于s[len(s):len(s)] = t |
| 10 | s *= n | 用s重复n次的结果更新s |
| 11 | s.insert(i,x) | 将s中编号为i的位置插入x,相当于s[i:i] = [x] |
| 12 | s.pop([i]) |
返回编号为i的元素,并将其从s中移除,默认为最后一个元素 |
| 13 | s.remove(x) | 移除s中第一个x |
| 14 | s.reverse() | 将s中元素顺序颠倒,s本身变化,无返回值 |
四、列表
python中的列表和c语言中数组是有区别的,列表中元素类型可以是不同的,而c语言数组元素类型必须一致。
1、构造列表四种方法
空列表:[]
直接填充每个元素:[a,b,c]
使用循环:[x for x in iterable]
使用函数:list() 或者 list(iterable)
2、构造列表实例
#构造空列表b,输出b和b的类型
b = []
print(b,type(b))
#结果
[] <class 'list'>
#直接填充每个元素
b = [1,2,'r','logan']
print(b,type(b))
#结果
[1, 2, 'r', 'logan'] <class 'list'>
#利用循环
s = (1,'f',3,5)
b = [x for x in s]
print(b,type(b))
#结果
[1, 'f', 3, 5] <class 'list'>
#利用函数
s = (1,'f',3,5)
a = list()
b = list(s)
print(a,type(a),b,type(b))
#结果
[] <class 'list'> [1, 'f', 3, 5] <class 'list'>
3、争对列表的操作方法:sort(key=None,reverse=False)
#列表的sort()函数
s = [1,6,3,2]
t = s.sort()
print(s,t)
#结果,t为None说明sort()函数无返回值,是在原列表上进行排序的(sorts the list in place),不会生成新列表
[1, 2, 3, 6] None
#带参数key的排序,key接收一个函数,默认按key从小到大排序,加上reverse=True结果反转,下面例子按元素绝对值从小到大,和从大到小排序
def he(x):
return abs(x)
s = [1,5,3,-2,-8]
s.sort(key=he)
print(s)
s.sort(key=he,reverse=True)
print(s)
#结果
[1, -2, 3, 5, -8]
[-8, 5, 3, -2, 1]
#可以利用匿名函数,下面例子等价于上面的按绝对值从小到大排序
s = [1,5,3,-2,-8]
s.sort(key=lambda x:abs(x))
print(s)
#结果
[1, -2, 3, 5, -8]
#如果key有多个参考条件(lambda函数有多个返回值),先按第一个参考条件排序,排序结果有同名次的再按第二个条件排序,否则就不再参考第二个条件
s = [1,5,3,-2,-8]
s.sort(key=lambda x:(x>0,abs(x)))
print(s)
#结果
[-2, -8, 1, 3, 5]
#解析
s序列经过lambda函数运算后会返回
| s | 1 | 5 | 3 | -2 | -8 |
| x>0 |
True(1) |
True(1) |
True(1) |
False(0) |
False(0) |
| abs(x) | 1 | 5 | 3 | 2 | 8 |
#先参考x>0条件,排序后s = [-2,-8,1,5,3],因为-2<0,-8<0,1>0,5>0,3>0所以-2和-8名次相同,1和5和3名次相同;再参考abs(x)条件,abs(-2)<abs(-8),abs(1)<abs(3)<abs(5),所以排序后结果为[-2, -8, 1, 3, 5]
五、元组
元组中值也可以是任意类型,使用整数索引,和列表的不同之处在于,元组不能被修改,元组决定因素是元素之间的逗号,而不是括号。
1、构造元组四种的方法
用一对括号表示空元组:()
一个元素的元组:a, or (a,)
多个元素用逗号分隔:a,b,c or (a,b,c)
使用内建函数tuple():tuple() or tuple(iterable)
六、range
range类型表示一个不可变的数字序列,通常用于在for循环中循环特定次数。
1、构造range的方法
range(stop)
range(start,stop[,step])
python笔记(1)--序列(列表 元组 range)的更多相关文章
- 【循序渐进学Python】2. Python中的序列——列表和元组
序列概览 在Python中有六种内建的序列:列表.元组.字符串.Unicode字符串.buffer对象和xrange对象.在这里暂时只讨论列表和元组.列表和元组的主要区别在于:列表可以修改,元组(不可 ...
- 巨蟒python全栈开发-第4天 列表&元组&range
今日内容大纲 1. 什么是列表 定义: 能装对象的对象 在python中使用[]来描述列表, 内部元素用逗号隔开. 对数据类型没有要求 列表存在索引和切片. 和字符串是一样的. 2. 相关的增删改查操 ...
- python笔记之序列
str字符串 表达:单引号,双引号,反斜杠 'let\'s go.' #只使用单引号,外部使用单引号,内部单引号用反斜杠 "let's go. " #单双引号混合使用 长字符串 使 ...
- python笔记02:列表与元素
本章将引入一个新的概念:数据结构.数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合.这些数据元素可以是数字或者字符,甚至可以是其他数据结构.在python中,最基本的数据结构是序 ...
- python 基础篇 04(列表 元组 常规操作)
本节主要内容:1. 列表2. 列表的增删改查3. 列表的嵌套4. 元组和元组嵌套5. range 一. 列表1.1 列表的介绍列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型. ...
- 记录我的 python 学习历程-Day03 列表/元组/rang
一.列表初识 列表是 Python 的基础数据类型之一,它是以''[ ]''的形式括起来的,每个元素用","隔开,属于容器型数据类型,他可以存放大量的.各种类型的数据. 基本格式 ...
- python基础数据类型之列表,元组操作
一.列表的索引和切片1.列表的索引列表和字符串一样样拥有索引 lst = ["a","b","c"] print(lst[0]) # 获取第 ...
- Python处理字符串和列表元组的小技巧
变量值互换 a = 1 b = 100 # 变量值互换 a, b = b, a print('a:', a) print('b:', b) 输出结果: a: 100 b: 1 多个变量赋值 a, b, ...
- python笔记04-----字典、元组、集合操作
1.字典 是一种key-value的数据类型,使用就像字典 无序的因为无下标 创建一个字典: info = { 'stu1':'qq', 'stu2':'ww', 'stu3' ...
随机推荐
- Qt PNG 背景透明
本文主要是解决Qt中QGraphicsAbstractShapeItem,QPixmap,QPainter等组件的透明化显示问题. 在Qt中定义了一个常量,用于设置透明的颜色,即Qt::transpa ...
- win32 htmlayout dom操作demo
之前两篇关于win32 htmlayout博文,记载了一个实现了简单的点击按钮弹出新窗口的demo,之后实践中发现,图形界面开发,最重要的还是要实现响应用户操作,改变原有界面的功能.比如说,界面上有一 ...
- MySql5.7.11 for Windows 安装(二)
原文:MySql5.7.11 for Windows 安装(二) 安装之后,首先创建data文件夹(旧版本本来就有),管理员打开cmd,cd到bin文件夹,输入 mysqld –initialize- ...
- MSYS2开发环境搭建(无幻的博客,编译OpenSSL,可使用pacman升级)
MSYS2开发环境搭建 软件安装 下载msys2-x86_64软件包,双击安装到某根目录下,比如D:\msys64. pacman是MSYS2自带的软件管理工具: 可通过修改msys64\etc\pa ...
- vue+element——父级元素fixed,遮罩会在上方
前言 这种场景还是蛮场景的 一个共用的head组件,组件里面通常是当前系统登录账号名 退出登录 修改密码这样的弹框 但是现在我又想head不跟着main内容上下滑动.所以用了fixed 定位. 问题来 ...
- 原生js封装轮播图
个人实际开发中用到的效果问题总结出来便于自己以后开发查看调用,如果也适用其他人请随意拿走勿喷就行! 原生js对于思路要求比较高,在js代码我都写有备注,足够理解并使用,即使是小白或者刚入行的程序员也比 ...
- Fabric1.4源码解析: 链码容器启动过程
想写点东西记录一下最近看的一些Fabric源码,本文使用的是fabric1.4的版本,所以对于其他版本的fabric,内容可能会有所不同. 本文想针对Fabric中链码容器的启动过程进行源码的解析.这 ...
- vue history 模式打包部署在域名的二级目录的配置指南
最近在做项目,需要把项目部署在域名下的二级目录,并且是在用vue-router的history 模式. 我们都知道vue-router 的两种前端基本访问模式 hash 和history .hash ...
- 浅谈AI视频技术超分辨率
泛娱乐应用成为主流,社交与互动性强是共性,而具备这些特性的产品往往都集中在直播.短视频.图片分享社区等社交化娱乐产品,而在这些产品背后的黑科技持续成为关注重点,网易云信在网易MCtalk 泛娱乐创新峰 ...
- 大白话5分钟带你走进人工智能-第30节集成学习之Boosting方式和Adaboost
目录 1.前述: 2.Bosting方式介绍: 3.Adaboost例子: 4.adaboost整体流程: 5.待解决问题: 6.解决第一个问题:如何获得不同的g(x): 6.1 我们看下权重与函数的 ...