一、序列分类

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)的更多相关文章

  1. 【循序渐进学Python】2. Python中的序列——列表和元组

    序列概览 在Python中有六种内建的序列:列表.元组.字符串.Unicode字符串.buffer对象和xrange对象.在这里暂时只讨论列表和元组.列表和元组的主要区别在于:列表可以修改,元组(不可 ...

  2. 巨蟒python全栈开发-第4天 列表&元组&range

    今日内容大纲 1. 什么是列表 定义: 能装对象的对象 在python中使用[]来描述列表, 内部元素用逗号隔开. 对数据类型没有要求 列表存在索引和切片. 和字符串是一样的. 2. 相关的增删改查操 ...

  3. python笔记之序列

    str字符串 表达:单引号,双引号,反斜杠 'let\'s go.' #只使用单引号,外部使用单引号,内部单引号用反斜杠 "let's go. " #单双引号混合使用 长字符串 使 ...

  4. python笔记02:列表与元素

    本章将引入一个新的概念:数据结构.数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合.这些数据元素可以是数字或者字符,甚至可以是其他数据结构.在python中,最基本的数据结构是序 ...

  5. python 基础篇 04(列表 元组 常规操作)

    本节主要内容:1. 列表2. 列表的增删改查3. 列表的嵌套4. 元组和元组嵌套5. range 一. 列表1.1 列表的介绍列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型. ...

  6. 记录我的 python 学习历程-Day03 列表/元组/rang

    一.列表初识 列表是 Python 的基础数据类型之一,它是以''[ ]''的形式括起来的,每个元素用","隔开,属于容器型数据类型,他可以存放大量的.各种类型的数据. 基本格式 ...

  7. python基础数据类型之列表,元组操作

    一.列表的索引和切片1.列表的索引列表和字符串一样样拥有索引 lst = ["a","b","c"] print(lst[0]) # 获取第 ...

  8. Python处理字符串和列表元组的小技巧

    变量值互换 a = 1 b = 100 # 变量值互换 a, b = b, a print('a:', a) print('b:', b) 输出结果: a: 100 b: 1 多个变量赋值 a, b, ...

  9. python笔记04-----字典、元组、集合操作

    1.字典 是一种key-value的数据类型,使用就像字典 无序的因为无下标 创建一个字典: info = {     'stu1':'qq',     'stu2':'ww',     'stu3' ...

随机推荐

  1. Linux学习之“vfork函数”

    为什么使用vfork()? 希望父子进程执行不同的代码.例如: 网络服务程序中,父进程等待客户端的服务请求,当请求达到时,父进程调用fork,使子进程处理该次请求,而父进程继续等待下一个服务请求到达. ...

  2. fileapi.h里的API函数(包括LockFileEx和FindFirstChangeNotification函数)

    /** * This file is part of the mingw-w64 runtime package. * No warranty is given; refer to the file ...

  3. RxJava入门优秀博客推荐

    RxJava用了快半年了,现在越来越离不开这个库,从使用到逐渐接触它的背后实现,突然想写点什么关于RxJava的内容.在酝酿如何组织内容的时候,就去看看自己关于RxJava的收藏,发现满满的干货! 1 ...

  4. UWP-电子音读出文字

    原文:UWP-电子音读出文字 源码: https://github.com/lindexi/Markdown 代码 private async void speech(string str, Medi ...

  5. Visual studio 创建通用项目失败vstemplate

    Visual studio 创建项目失败 提示 the vstemplate file references the wizard class 'Microsoft.VisualStudio.WinR ...

  6. 简单图标转xaml代码

    工具 PhotoShopCC(2017) Blend 2017 原图 步骤 1,使用钢笔工具勾勒出大致路径 2,将工作路径转为形状路径 3,图层右键->复制SVG <svg xmlns=& ...

  7. delphi Stomp客户端连接 RabbitMQ(1)

    最近公司想上个消息推送系统,网上搜了很多,因公司主要产品是Delphi,我选择了开源的RabbitMQ,Erlang语言开发,天生并行. 代码下载地址:delphistomp下载地址 windows上 ...

  8. ColorCode是一个在线随机取色工具,可以随机获取十六进制、RGB、HSl等颜色。

    ColorCode是一个在线随机取色工具,可以随机获取十六进制.RGB.HSl等颜色. ColorCode 彩蛋爆料直击现场 ColorCode是一个在线随机取色工具,可以随机获取十六进制.RGB.H ...

  9. 比较DirectX和OpenGL的区别(比较详细)

    OpenGL是个专业的3D程序接口,是一个功能强大,调用方便的底层3D图形库.OpenGL的前身是SGI公司为其图形工作站开发的IRIS GL.IRIS GL是一个工业标准的3D图形软件接口,功能虽然 ...

  10. 京东sdk商家上架接口调用问题总结

    前言: 最近在做商家发布产品,调用京东sdk,发现问题很多,而且还是在我同事的帮助下完成的,摸索中,菜鸟还请高手门多多提携才好,入正题 首先是引用jd的sdk啦,京东sdk中发布商品需要调用一个 36 ...