一、概述:

Python中两种基本的数据结构是序列和映射,序列包含:可变的列表和不可变的元组;而当序列不够用时就出现了映射:字典。列表中的元素是可以变化的,元组里面的元素一旦初始化后就不可更改。列表和元组只是一类元数据的集合体,还不能满足通过名字引用值的数据,故字典就充当了这个功能角色。

二、列表(list):

1.写法示例:x=[1,2,3,4,5] y=['1','2','3','4','5']

2.索引:

x[0]

=>1

y[0]

=>'1'

3.分片:x[:]

=>[1,2,3,4,5]

x[0:3]

=>[1,2,3]

x[0:4:2]

=>[1,3]

可以看出,第一个数字表示起始元素的索引值,第二个数字表示结束元素的值,但不包含它,第三个是步长。注意:这三个数字都可以是负值。

4.序列相加:x+y

=>[1, 2, 3, 4, 5, '1', '2', '3', '4', '5']

5.乘法:x*5

=>[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]

6.成员资格:

1 in x

=> True

6 in x

=> False

7.min,max,len:

min(x)

=>1

max(x)

=>5

len(x)

=>5

8.list函数:list('Hello')

=>['H','e','l','l','o']

9.元素赋值:x[0]=11

=> x=[11,2,3,4,5]

10.删除元素:del x[0]

=> x=[2,3,4,5]

11.分片赋值:x[0:3]=[11,22,33]

=> x=[11,22,33,4,5]

12.append: x.append(6)

=> x=[1,2,3,4,5,6]

13.count: 查找x中元素1出现的次数: x.count(1)

=> 1

14.extend:将一个列表追加到列表末尾: x.extend([6,7,8])

=> x=[1,2,3,4,5,6,7,8]

15.index:找出某个元素的索引位置:x.index(2)=1

16.insert:将元素插入到指定索引前:x.insert(2,10)

=> x=[1,2,10,3,4,5]

17.pop:移除列表中的一个元素,并返回这个元素: x.pop()

=>5

x.pop(0)

=>1

18.remove:移除列表中某个值的第一个匹配项:x.remove(1)

=>x=[2,3,4,5]

19.reverse:反向存放:x.reverse() => x=[5,4,3,2,1]

20.sort,sorted:将列表排序:x.reverse()

=> x=[5,4,3,2,1]

=> x.sort()

=> x=[1,2,3,4,5]

注意:sort并不返回任何值,即:

z=x.sort()

=>z = None.

如果你想对x排序,并且要保留x,有两种方法共选择:

(1)z=x[:]

z.sort()

=> z=[5,4,3,2,1]

(2)z=sorted(x)

21.高级排序:如果你希望按照某种特定的方式排序,可以将函数、方法名作为参数传递给sort.

x.sort(key=cmp,reverse=True) ,其中key和reverse叫做关键字参数,所以您也可以这样写:x.sort(reverse=True,key=cmp),也就是关键字参数可以任意调整参数顺序。

说明:函数cmp(a,b),a>b =>1 , a<b =>-1, a=b =>0

任何适用于列表内元素的函数都可以作为key值传递进去,当然你也可以传递自定义的函数,个人感觉很像.net里面的委托。

三、元组

元组不可修改,字符串也是不可修改的,这个.net中的字符串是一个意思,每次对字符使用+时,都是重新申请了一段新的地址空间,所以我们在处理字符串频繁修改型程序时一般都用StringBuilder.

由于元组和列表最大的不同就是不可修改,所以列表中的 9.元素赋值,10.删除元素,11.分片赋值,12.append,14.extend,16.insert,17.pop,18.remove,19.reverse,20.sort,21.高级排序任何妄图修改元组的函数都不支持。

1.写法:x=1,2,3,4,5 或者 x=(1,2,3,4,5) 或者

x=1, =>x =(1)

2.乘法:

x=(1,2,3,4,5)

x*3

=>(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5)

3.tuple:tuple函数和list函数基本一致:tuple('Hello')

=>('H','e','l','l','o')

4.索引:元组也是序列的一种,所以他也可以用索引来访问元素:

x[0]

=> 1

5.分片:元组也是序列的一种,所以他也可以用索引来分片:

x[0:2]

=>(1,2)

6.成员资格: 1 in x

=> True

6 in x

=> False

7.min,max,len: min(x)

=>1

max(x)

=>5

len(x)

=>5

8.count: 查找x中元素1出现的次数: x.count(1)

=> 1

9.index:找出某个元素的索引位置:x.index(2)

=> 1

四、字典

1.写法: d={'a':1,'b':2}

2.dict函数:将键值对转换成字典:

items=[('a',1),('b',2)]

d=dict(itmes)

=> d={'a':1,'b':2}

3.另一种创建方式:d=dict(a=1,b=2)

=> {'a':1,'b':2}

4.基本字典操作方法:

(1)求元素个数:len(d) => 2

(2)用键访问值:d['a'] => 1

(3)修改值:d['a']=3

(4)删除: del d['a']

(5)成员资格: 'a' in d

5.很有用的方法:格式化字符串

通常的字符串格式化:

'i am %s ' % 'vertor'

=> 'i am vertor'

而如果应字典格式化就可以实现类似.net中string.format()的功能了:

d={'name':'vertor','age'=20}

'i am %(name)s, and %(age)s years old' % d

=> i am vertor, and 20 years old.

6.clear:清除所有元素

7.浅复制(shallow copy)copy函数:

d={'name':'verter',age:20,friends:['ali','qq','baidu']}

d2=d.copy()

d2['name']='smith' #用新的值替换原来的值

d2['friends'].remove('qq') #修改原来的值

=>d2

=>{'name':'smith',age:20,friends:['ali','baidu']}

=>d

=>{'name':'verter',age:20,friends:['ali','baidu']}

可以看到,在副本中替换值不会影响到原始字典;而如果修改了副本,原始字典也会被修改。

如果要避免这种情况就需要用到深复制:deepcopy

8.深复制(deepcopy):deepcopy函数

9.fromkeys:使用给定的键建立新的字典

{}.fromkeys(['name','age'])

=>{'name':None,'age':None}

dict.fromkeys(['name','age'])

=>{'name':None,'age':None}

dict.fromkeys(['name','age'],'verter')

=>{'name':'verter','age':'verter'}

10.get:另一种用键访问元素值的方法

d={'name':'verter','age':20}

=>d.get('name')

=>'verter'

=>d.get('friends')

=>None

注意:get与d['friends']的区别是后者会抛出KeyError异常,而get不会,他只是返回None.

11.has_key:

d={'name':'verter','age':20}

=>d.has_key('name')

=>True

注意:python3抛弃了这个API.

12.items和iteritems

(1)items将字典所有以<strong>列表</strong>的形式返回。

d={'name':'verter','age':20}

=>d.items()

=>[('name', 'verter'), ('age', 20)]

(2)iteritems作用大致相同,不过它是返回一个迭代器对象而不是列表

d={'name':'verter','age':20}

=>it=d.iteritems()

=>list(it)

=>[('name', 'verter'), ('age', 20)]

注意:在python3.0中将iteritems私有化了,变成了__iter__(),不知何故,难道这个功能太蛋疼,被抛弃了?

13.keys和iterkeys

d={'name':'verter','age':20}

=>for k in x.keys(): print(k)

=>'name'

=>'age'

同理:iterkeys返回迭代器,并且也被python3.0抛弃了,不再提供此方法了。

14.pop:返回对应键,并将他从字典中移除

d.pop('name')

=>'verter'

=>d

=>{'age':20}

15.popitem:不带参数,弹出一个随机元素。

d.popitem()

=>{'name','verter'}

这个对事先不知道键的情况下很有用。

16.setdefault:设置默认值。

17.update:利用一个字段更新另外一个字典,当然是更新对应键的值

d={'name':'verter','age':20}

=>d2={'name':'verter2'}

=>d.update(d2)

=>d

=>{'name':'verter2','age':20}

18.values和itevalues

(1)values:已列表形式返回字典中的值

(2)itervalues:返回值的迭代器

注意:python3.0还是抛弃了这个API.

Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结相关推荐

  1. python实验二序列_python 学习笔记 二 序列, 列表, 元组, 字符串

    序列 序类是一个集合概念, Pthon包括六种内建序列: 列表, 元组, 字符串, Unicode字符串, buffer对象和xrange对象. 其中, 我们最长用的要数前三个. 通用序列操作 1. ...

  2. 20190513——python基础(列表、数据类型:字典、列表和字典的异同)

    二.python基础(列表.数据类型:字典.列表和字典的异同)                                                1.列表 1)什么是列表 2)从列表提取单 ...

  3. python变量 数据类型 列表 元组 字典

    python基础语法2 变量 数据类型与类型转换 列表 添加列表元素 修改元素 删除列表元素 组织列表 创建数值列表 操作列表 元组 元组转列表 字典 创建字典 列表取值 字典删除增加修改 变量 变量 ...

  4. python序列—列表,元组,字符串

    目录 一.  1.列表语法 2.列表切片 3.列表的使用--增/删/改 1.增 2.删 3.改 4.列表的运算 5.列表的嵌套 访问 6.列表的拷贝 浅拷贝 深拷贝 7.列表推导式 基本语法 获取元素 ...

  5. 【Python基础入门系列】第07天:Python 数据结构--序列

    python内置序列类型最常见的是列表,元组和字符串.(序列是python中最基础的数据结构,而数据结构是计算机存储,组织数据的方式.) 另外还提供了字典和集合的数据结构,但他们属于无顺序的数据集合体 ...

  6. 【Python】序列 列表

    序列 & 列表 序列 序列的概念 序列的分类 列表 列表的概念 列表的使用 基本操作 切片操作 常用操作 列表的修改 (1)添加 (2)删除 (3)修改 (4)排序 (5)复制 for in ...

  7. Python拆开嵌套列表元组

    拆开一层 利用functools.reduce()或itertools.chain.from_iterable() import functoolsdef list_unpack(l):"& ...

  8. Python数据结构——序列、字典

    一.定义函数countchar()按字母表顺序统计字符串中所有出现的字母的个数(允许输入大写字符,并且计数时不区分大小写).形如: def countchar(str):... ...return a ...

  9. *python高级数据-列表-元组-字典

    列表list 列表用来存放多条数据:字符串.int.list.dict等都可以 储存一系列名字,存储一些新闻条目,可以使用列表的格式. # 例如 Name = '张三' Name2 = 'lisi' ...

  10. python入门之 列表 元组 集合 字典 最全教程

    一.列表 列表(list)是Python中的一种数据结构,它可以存储不同类型的数据.不同元素以逗号分隔. //下标索引访问 A = ['xiaoWang', 'xiaoZhang', 'xiaoHua ...

最新文章

  1. 【智能语音】ROC-RK3308-CC Amazon Alexa固件发布
  2. 10.QT事件机制源码时序分析(中)
  3. CISCO路由器、交换机密码破解
  4. 10 个常见的 Linux 终端仿真器
  5. 深入浅出讲解:php的socket通信
  6. springboot2 虚拟路径设置_转载—springboot配置虚拟路径以外部访问
  7. [CareerCup] 1.6 Rotate Image 翻转图像
  8. linux 用户 组区别吗,Linux系统的用户和用户组有什么区别
  9. vue的mixins属性
  10. 95-140-040-源码-transform-简介
  11. 北斗b2频点频率_北斗系统中“三”的奥秘
  12. CentOS系统是什么
  13. 单电源运算放大器全波整流电路_电子电路识图从入门到精通,从零开始学电子电路...
  14. 直觉模糊有计算机知识嘛,多源直觉模糊信息系统的知识获取方法
  15. Dijkstra算法,起点到当前点的最短距离及路径 C++实现
  16. 华为NP课程笔记1-OSPF1
  17. 美国佐治亚理工学院计算机博士,大神offer | 恭喜G同学全奖录取佐治亚理工学院-数学博士!...
  18. AUTOCAD——图层线型
  19. C++中的swap函数
  20. 保障出行安全|科力锐助力长沙黄花国际机场灾备建设

热门文章

  1. Adobe illustrator 显示网格移除剪切蒙版和背景 - 连载 4
  2. Nature公开1300多篇论文工厂论文的期刊分布,这个杂志高居榜首
  3. PS发光眩光效果插件:BBTools Glow Glare for Mac
  4. 支持M1芯片mac 达芬奇17中文版(详细安装教程) DaVinci Resolve Studio 17.3.1b5
  5. 如何解决pd16虚拟机 mac 联网失败问题?pd16 m1芯片版网络初始化失败问题!
  6. bootsrap 外边距_Bootstrap 网格系统布局详解
  7. linux重启网络服务_vm上linux虚拟机NAT模式配置
  8. echo 多行_Java中Scanner的用法:单行多行输入
  9. 1.9 编程基础之二分查找 13:整数去重 python
  10. 1982:【19CSPJ普及组】数字游戏 方法二