在Python中,最基本的数据结构(通过某种方式组织在一起的数据元素的集合)是序列。Python包含6种内建序列,即列表、元组、字符串、unicode字符串、buffer对象和xrange对象。

1.通用序列操作

Python中所有序列的通用操作有:索引([])、分片([:])、序列相加(+)、乘法(*)、成员资格(in/not in)、长度、最大值和最小值。

1.1索引

序列中的元素从0开始,从左向右自然顺序编号(正数索引)。交互模式下也可从右开始索引(负数索引),最右边的元素索引值为-1,注意:-0和0均指向第一个元素。

str="Hello"
str[0]
'H'
str[1]
'e'
str[-1]
'o'#不定义变量直接使用索引效果是一样的
"Hello"[0]
'H'#还可直接对函数的返回结果进行索引操作
str1=input()[0]
hello
str1
'h'

总结:索引既可以对变量的引用操作,也可以直接操作序列,还可以操作函数的返回序列。

1.2分片

索引用来对单个元素进行访问,分片可以对一定范围内的元素进行访问。

分为正数索引和负数索引(从右边开始计数)。

number=[1,2,3,4,5,6,7,8,9,10]
number[0:3]
[1, 2, 3]     #正数索引
number[0:9]   #注意:结束点的元素不包含在分片内,即number[9]不包含在内
[1, 2, 3, 4, 5, 6, 7, 8, 9]
number[-3:-1] #负数索引,从右开始计数,取倒数第三和倒数第二的数字
[8, 9]

注意:number[a:b]意思是取下标的那些元素,不包含number[b].

问题:怎样取到最后一个元素?

答:第二个索引为空即可。

number=[1,2,3,4,5,6,7,8,9,10]
number[7:]
[8, 9, 10]
number[7:10]   #也可令终点加1,这样取的数就为number[7]——number[9]
[8, 9, 10]
number[-3:]
[8, 9, 10]#也可令第一个索引为空
number[:3]
[1, 2, 3]
#两个索引都为空,表明取得整个数组
number[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

分片时还可取步长[起点:终点:步长],上述默认步长为1

number=[1,2,3,4,5,6,7,8,9,10]
number[0:10:2]
[1, 3, 5, 7, 9]
number[::2]
[1, 3, 5, 7, 9]#步长也可设置为负数
number[10:0:-2]
[10, 8, 6, 4, 2]
number[::-2]
[10, 8, 6, 4, 2]
number[10:0:-1]  #注意:第二个索引为0,取不到序列中的第一个元素
[10, 9, 8, 7, 6, 5, 4, 3, 2]
number[10::-1]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

1.3序列相加及乘法

[1,2,3]+[4,5,6]
[1, 2, 3, 4, 5, 6]
[2]*5
[2, 2, 2, 2, 2]

空列表可用[]表示,若想创建一个占用多个元素的空间,却不包括任何有用内容的列表,则可用空列表乘以对应数字。

若要初始化一个长度为x的序列,可以使用None,None是Python的内建值,代表空值。

sq = [None]*5   #初始化sq为含有5个None的序列
sq
[None, None, None, None, None]

1.4成员资格

见上一节笔记

1.5长度、最小值和最大值

number=[-1,2,5,8]
len(number)
4
max(number)
8
min(number)
-1
max(3,5,7,9)
9
min(2,-5)
-5

2.列表

2.1更新列表

元素赋值

a=[1,2,5,8]
a[2]=100
a[3]='hello'
a
[1, 2, 100, 'hello']

注:可以对一个列表中的元素赋不同的值。

增加元素——list.append(obj)

list是列表名,qppend直接在列表末尾添加新元素。

sq=['a','b','c']
sq.append(3)
sq
['a', 'b', 'c', 3]
a=[1,2,3]
a.append('hello')
a
[1, 2, 3, 'hello']

注:可以往数字序列中添加字符串,也可以往字符串序列中添加数字。

删除元素——del

a=[1,2,3]
del a[1]
print('删除第二个元素后:',a)
删除第二个元素后: [1, 3]

分片赋值

引进一个新函数——list()函数,该函数可以直接将字符串(所有类型的序列)转换为列表

list('认真学习Python')
['认', '真', '学', '习', 'P', 'y', 't', 'h', 'o', 'n']
sq=list('hi,boy')
sq[3:]=list('man')
sq
['h', 'i', ',', 'm', 'a', 'n']
sq[3:]=list('woman')          #分片赋值可以使用与原序列不等长的序列将其分片替换
sq
['h', 'i', ',', 'w', 'o', 'm', 'a', 'n']
a=['a','e']
a[1:1]=list('bcd')
a
['a', 'b', 'c', 'd', 'e']

注:上述程序表明分片赋值可以在任意位置增加元素。

a=list('abcde')
a[1:4]=[]
a
['a', 'e']

注:上述程序表明分片赋值也可以在任意位置删除元素。

2.2嵌套列表

[列表1,列表2,...]

a1=['a','b','c']
a2=[1,2]
mix=[a1,a2]      #mix是一个列表,里面的每一个元素a1、a2也是列表
mix[0]
['a', 'b', 'c']
mix[1]
[1, 2]

2.3列表方法

上一节讲了有关字符串与数字的内置函数,这一节讲讲有关列表的一些常用方法。

首先,方法调用与函数调用类似,调用语法如下:

对象.方法(参数)

例如:1、之前提到的list.append(obj)

2、list.count(obj)——统计某个元素在列表中出现的字数

3、list.extend(seq)——在列表末尾一次性追加另一个序列中的多个值

a1=['a','b','c']
a2=[1,2]
a1.extend(a2)
a1
['a', 'b', 'c', 1, 2]#也可用分片赋值实现相同结果
a1=['a','b','c']
a1[len(a1):]=a2
a1
['a', 'b', 'c', 1, 2]

4、list.index(obj)——查找列表中某一个元素的索引位置(若查找的元素不在列表中则报错)

5、list.insert(index,obj)——将对象插入列表(index表示要插入的索引位置,obj表示插入对象)

6、list.pop(obj)——移除列表中某一位置的元素(obj表示要移除的列表中元素的编号),并且返回该元素的值

参数为空时,默认移除最后一个元素

7、list.remove(obj)——移除列表中某个值的第一个匹配项(obj为要移除的对象)

8、list.reverse()——反转列表(不需要输入参数)

对应地有个reversed()函数,可将序列反向迭代(reversed(序列名))

9、list.sort(func)——对原列表进行排序,若指定参数func,则使用该参数的方法进行排序

sort会改变原来列表,而不是简单返回一个已排序的列表副本

num=[5,8,1,3,6]
n=num               #直接将列表num赋值给n
n.sort()
print('变量n的结果是:',n)
变量n的结果是: [1, 3, 5, 6, 8]
print('变量num的结果是:',num)
变量num的结果是: [1, 3, 5, 6, 8]#num也被排序了
num=[5,8,1,3,6]
n=num[:]          #将num切片后赋值给n
n.sort()
print('变量n的结果是:',n)
变量n的结果是: [1, 3, 5, 6, 8]
print('变量num的结果是:',num)
变量num的结果是: [5, 8, 1, 3, 6]#num保持原样num=[5,8,1,3,6]
n=num.sort()
print('变量n的结果是:',n)
变量n的结果是: None

注:若不将原列表分片赋值给另一个变量,则两个列表都会被排序

sort修改了原列表,返回的是空值

sorted()函数可以直接获取列表的副本进行排序

num=[5,8,1,3,6]
n=sorted(num)
n
[1, 3, 5, 6, 8]
num
[5, 8, 1, 3, 6]
#num保持原样

注:sorted函数可用于任何序列,返回结果都是一个列表

10、list.clear()——清空列表

类似于del a[:]

11、list.copy()——复制列表

12、高级排序

sort方法有两个可选参数key和reverse,称为关键字参数

f=['study','python','is','happy']
f.sort(key=len)                  #按字符串由短到长排序
f
['is', 'study', 'happy', 'python']
f.sort(key=len,reverse=True)      #先按字符串由短到长排序,再逆序
f
['python', 'study', 'happy', 'is']num=[5,8,1,3,6]
num.sort(reverse=True)
num
[8, 6, 5, 3, 1]

3.元组

与列表类似,不同之处在于元组的元素不能修改,若用逗号分隔了一些值,就会自动创建元组。

()为空元组

包含一个值的元组,必须在括号中的元素后面加上一个逗号,例如:(1,)

1,2,3
(1, 2, 3)
'hello','world'
('hello', 'world')

3.1 tuple()函数——以序列为参数,将其转化为元组

tuple('hello')
('h', 'e', 'l', 'l', 'o')
tuple([1,2,3])
(1, 2, 3)

3.2元组的基本操作

1、使用下标索引访问元组

2、元组的元素不允许修改或删除,但用"+"进行元组连接,del删除整个元组

3、len()、max()、min()

Python基础学习二相关推荐

  1. Python基础学习笔记之(二)

    Python基础学习笔记之(二) zouxy09@qq.com http://blog.csdn.net/zouxy09 六.包与模块 1.模块module Python中每一个.py脚本定义一个模块 ...

  2. python pyramid基础学习二

    python pyramid基础学习二 1.前言 前面我们使用了基础命令创建pyramid项目,并运行了Hello word,万事开头难,我们知道了开发pyramid项目需要一个env文件夹,里面包 ...

  3. Python基础学习(二)-条件,循环语句

    Python基础学习(二)-条件,循环语句     一,条件语句    1,if  else           if  判断条件:               执行语句...           e ...

  4. python开发需要掌握哪些知识-Python基础学习需要掌握哪些知识

    1.1Python的对象 python的内置对象类型有很多,包括数字,字符串,列表,集合,元组,字典等等,在Python中,一切皆对象 pickle腌制--在Python中,如果有一些对象需要持久性存 ...

  5. Python基础学习笔记之(一)

    Python基础学习笔记之(一) zouxy09@qq.com http://blog.csdn.net/zouxy09 前段时间参加微软的windows Azure云计算的一个小培训,其中Pytho ...

  6. Python基础学习备忘录上

    Python基础学习 备忘录上 Python语法 1.1 输出 1.1.1 输出换行的更改 1.1.2 输出整型 1.1.3 输出字符串 1.1.4 字符串拼接与多行输出 1.1.5 输入输出类型转换 ...

  7. python | 基础学习(一)了解Bug、pycharm、变量、程序的三大流程(顺序、if、while)、运算符、快捷键

    文章目录 一.引言 1.python的起源 2.解释器 3.python的设计目标 4.python的特点 二.python 1.了解BUG 2.python的三种运行方式 ①解释器python/py ...

  8. Python基础学习之列表操作

    Python基础学习之列表操作 文章目录 Python基础学习之列表操作 1. 列表的增,删,改,查 1.1 列表的增加,常用的方法有:append, extent, incert 1.2 列表的删除 ...

  9. Python基础学习之字典操作

    Python基础学习之字典操作 文章目录 Python基础学习之字典操作 1. 字典的创建 1.1 直接赋值法 1.2 关键字赋值法 1.3 列表转化法 1.4 元素增加法 1.5 元组转化法 1.6 ...

最新文章

  1. Microsoft NLayerApp案例理论与实践 - 项目简“.NET研究”介与环境搭建
  2. 怎么将jsp中var报错_招聘中不得将全日制作为限制性条件,怎么就不公平了?
  3. 大话数据结构学习笔记一:第一章
  4. db2函数写法简单说明
  5. SqlServer发布订阅错误收集
  6. 【深度语义匹配模型 】原理篇一:表示型
  7. ubuntu14.04 配置C/C++开发IDE
  8. Thinking in java Java编程思想 该不该读
  9. 关于Qt::WA_TransparentForMouseEvents的一些记录
  10. 国际著名黑客大赛介绍
  11. vmware虚拟机连不上服务器,VMware虚拟机nat模式连不上网怎么办
  12. javabean/Listjavabean与map/Listmap互相转换
  13. RT-Thread柿饼的控件简介
  14. 普元 AppServer 部署应用时报错:Exception while loading the app : CDI deployment failure
  15. mysql日常管理事件
  16. 安装操作系统的方法?
  17. 云服务部署项目(一)——初入新世界大门
  18. 自媒体如何找免费素材
  19. 【BDTC前瞻】公安部专家谈大数据安全与政策法规
  20. py3 BeautifulSoup 利器 html 解析器使用

热门文章

  1. 基于改进逆透视变换的智能车测距技术_禾赛科技:助力2020智能网联汽车C-V2X大规模测试活动_E理财云掌号...
  2. Blue Origin宣布,Jeff Bezos和他的兄弟Mark将与竞拍成功者一起参加7月20日新雪帕德号火箭的首次载人飞行
  3. 【书影观后感 十一】我情愿一直追逐理想
  4. Windows Server 2008R2 搭建FTP服务器完美实现用户隔离
  5. linux通过nfs挂载根文件系统报错:VFS: Unable to mount root fs via NFS, trying floppy
  6. 【Java项目:基于java+ssm生鲜超市进销存管理系统——计算机毕业设计
  7. PostGreSQL设置主键自增
  8. 清华大学ucore实验lab
  9. 网络流__5 多源汇最大流
  10. 「解析」牛客网-华为机考企业真题 1-20