数据结构的分类依据?基本的“数组”在python中是列表,

数据结构的作用?容器,盛放数据,是由原子组成的分子。可以将一群数据进行整合、拆分、重排。

3.2 列表

列表是啥?顺序表,可以同时存放任意类型数据,可变。

如何创建列表?3种方式,[ ],list()、列表推导。

test = ["lizhixin", 1991, 180.0, True]
>>> b = ('lizhixin', 1991, 180.0, False)
>>> a =list(b) #list不能有多个参数,其作用是将其他结构转化为列表
>>> a
['lizhixin', 1991, 180.0, False]

额外阅读:Python 列表(List)操作方法详解

list( )函数都有哪些用途?

如上,可以将元组转化为列表;其次可以将字符串转化为列表,如下:

>>> a = list("lizhixin")
>>> a
['l', 'i', 'z', 'h', 'i', 'x', 'i', 'n']

如何分割字符串?使用split()方法,如下:

>>> a = "lizhixin"
>>> b = a.split('i')
>>> b
['l', 'zh', 'x', 'n']

如何获得列表中的某个元素?修改元素? 使用偏移量offset

>>> a = ["li", "zhi", "xin"]
>>> a[0] #最多为a[2]
'li'
>>> a[-1] #最少为a[-3]==a[0]
'xin'

列表中的列表有什么用途? 组成了一个简单的二维数组,如下:

>>> a = ['li', 'zhi', 'xin']
>>> b = ['zhang', 'lu']
>>> c = ['ming']
>>> d = [a, b, c]
>>> d
[['li', 'zhi', 'xin'], ['zhang', 'lu'], ['ming']]
>>> d[0][0]
'li'
>>> d[2][0]
'ming'

如何使用切片提取指定范围的元素? 切片用法很多,主要有三个参数,起始、终止和步长。[start:end:step,注意提取到的是end-1。

>>> a = [0,1,2,3,4,5]
>>> a[0:3] #3-1
[0, 1, 2]
>>> a[::2] #默认从0开始
[0, 2, 4]
>>> a[::-2] #从最后开始
[5, 3, 1]
>>> a[::-1]
[5, 4, 3, 2, 1, 0]

如何向尾部添加元素?如何合并列表?如何插入元素?如何删除指定位置元素?如何删除指定值的元素?如何获取并删除指定位置元素?

使用列表对象的append( )方法,向列表尾部添加元素:

>>> a=[]
>>> a.append("lizhixin")
>>> a
['lizhixin']

使用对象的extent()方法或 += 运算符合并列表:

>>> a = ["lizhixin"]
>>> b = ["zhangminglu"]
>>> a.extend(b)
>>> a
['lizhixin', 'zhangminglu']
>>> a = [1]
>>> b = [2]
>>> a += b
>>> a
[1, 2]

使用insert()方法在指定位置插入元素:

>>> a = [1,2,3,4]
>>> a.insert(1, 5)
>>> a
[1, 5, 2, 3, 4]

使用del 语句 删除指定位置元素:

>>> a = [1,2,3,4]
>>> a
[1, 2, 3, 4]
>>> del a[2]
>>> a
[1, 2, 4]

使用remove()函数删除指定值元素:

>>> a.remove(4)
>>> a
[1, 2]

使用pop()函数获取并删除指定位置的元素:

>>> a.pop()
2
>>> a
[1]

添加元素:append( ), extent( ), insert( ).

删除元素:del, remove( ), pop( ).

 

如何查询具有指定值元素的位置?如何判断值是否存在?如何计算特定值出现的次数?如何转换为字符串?

使用index()函数查询具有特定值的元素位置:

>>> a = [1,2,3,4,5]
>>> a.index(3)
2

使用in语句判断值是否存在:

>>> 5 in a
True

使用count()函数计算特定值出现的次数:

>>> a.count(3)
1

使用字符串的join()方法将字符列表转化为字符串:

>>> a = ['`', 'q', '1']   #其元素不能是非字符
>>> ''.join(a)
'`q1'

如何排序?如何获取长度?如何赋值和赋值列表?

使用列表sort()方法重新排列元素,改变原列表:

>>> a = ["li", "zhi", "xin"]
>>> a.sort()
>>> a
['li', 'xin', 'zhi']

使用sorted()函数返回排序后列表副本:

>>> a = ["li", "zhi", "xin"]
>>> sorted(a)
['li', 'xin', 'zhi']
>>> a
['li', 'zhi', 'xin']
>>> a.sort(reverse=True)
>>> a
['zhi', 'xin', 'li']

使用len()函数返回列表长度:

>>> len(a)
3

使用=号赋值(对象之间只是引用赋值):

>>> a = [1, 2, 3]
>>> b = a
>>> a[0] = 5
>>> b
[5, 2, 3]

使用列表的copy()方法复制:

>>> a = [1, 2, 3]
>>> b = a.copy()
>>> b
[1, 2, 3]
>>> c = list(a)
>>> c
[1, 2, 3]
>>> d = a[::]
>>> d
[1, 2, 3]

 

3.3 元组

元组与列表的区别?元组是不可变的,不能插入和删除或修改,相当于一个常量列表,只能整体改变。

怎么创建元组?

>>> a = ()  #创建空元组
>>> a
()
>>> a = 1,   #元组不是由括号来创建的,而是由逗号
>>> a
(1,)

元组解包是啥?如何实现?

>>> a = 1, 2, 3,
>>> a
(1, 2, 3)
>>> b, c, d = a
>>> b
1

额外技巧:

>>> a = 1  #替换,思路是元组赋值
>>> b = 2
>>> a, b = b, a
>>> a
2
>>> b
1

如何将列表转化为元组?

>>> a = [1, 2, 3]
>>> tuple(a)
(1, 2, 3)

 

3.4 字典

字典的键必须彼此不同,必须是唯一标识。

怎么创建字典?

>>> a = {}
>>> a
{}
>>> a = {1:a, 2:b, 3:c}
>>> a
{1: {}, 2: 1, 3: 2}

怎么用其他的结构生成字典?

任意的双值子序列都行,可以很容易的使用zip()函数生成双元素序列。

>>> a = [[1, 2], [3, 4], [5, 6]]
>>> dict(a)
{1: 2, 3: 4, 5: 6}
>>> b = ((1, 2), (3, 4), (5, 6))
>>> dict(b)
{1: 2, 3: 4, 5: 6}
>>> c = ('ab', 'cd', 'ef')
>>> dict(c)
{'e': 'f', 'c': 'd', 'a': 'b'}

如何修改字典的值?

>>> a = {1: 2, 3: 4, 5: 6}
>>> a[1] = 11
>>> a
{1: 11, 3: 4, 5: 6}
>>> a[6] = 7
>>> a
{1: 11, 3: 4, 5: 6, 6: 7}

如何合并字典?

使用字典的update()方法合并字典:

>>> a = {1:2, 3:4, 5:6}
>>> b = {7:8, 9:0}
>>> a.update(b)
>>> a
{7: 8, 1: 2, 3: 4, 5: 6, 9: 0}

如何删除指定键的元素?

del语句

>>> del a[7]
>>> a
{1: 2, 3: 4, 5: 6, 9: 0}

如何清空所有元素?

>>> a.clear()
>>> a
{}
>>> a = {}
>>> a
{}

如何判断对象是否在字典内?

>>> a = {1:2, 3:4, 5:6}
>>> 1 in a
True
>>> 2 in a
False

如何获取字典内所有的键?所有的值?如何获取键值对?

字典的keys()方法 和 values()方法

>>> a = {1:2, 3:4, 5:6}
>>> a.keys()
dict_keys([1, 3, 5])
>>> a.values()
dict_values([2, 4, 6])

字典的items()方法:

>>> list(a.items())
[(1, 2), (3, 4), (5, 6)]

3.5 集合

没有顺序,就像是舍弃了值的字典。具有数学意义上的所有集合运算。

如何创建集合?

>>> a = set()
>>> a
set()
>>> a = {1, 2, 3, 4}
>>> a
{1, 2, 3, 4}

如何将其他结构转化为集合?

>>> set("lizhixin")
{'z', 'h', 'l', 'i', 'n', 'x'}
>>> set([1, 2, 3])
{1, 2, 3}
>>> set((1, 2, 3))
{1, 2, 3}
>>> set({1:2, 3:4, 5:6})
{1, 3, 5}

集合有哪些运算?

交集

>>> a = {1, 2}
>>> b = {2, 3}
>>> a & b
{2}
>>> a.intersection(b)
{2}

并集

>>> a | b
{1, 2, 3}
>>> a.union(b)
{1, 2, 3}

差集

>>> a - b
{1}
>>> a.difference(b)
{1}

异或集

>>> a^b
{1, 3}
>>> a.symmetric_difference(b)
{1, 3}

子集

>>> a <= b
False
>>> a.issubset(b)
False

超集

>>> a >= b
False
>>> a.issuperset(b)
False

真超集

>>> a > b
False

 

3.6 比较

 

3.7 大型数据结构

第三章 Python容器:列表、元组、字典与集合的更多相关文章

  1. python中列表 元组 字典 集合的区别

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...

  2. **python中列表 元组 字典 集合

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. 1.列表 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔. 列表的特 ...

  3. python进阶---列表、字典、集合相关操作

    基本概念 列表 序列是python中一个基本的数据结构,每个元素都有一个索引index 操作 # 创建列表 list = [] # 修改列表 list[2] = 2001 # 删除列表 del lis ...

  4. python生成式:列表、字典、集合

    python的3类生成式: 列表生成式 字典生成式 集合生成式 1.python列表生成式 my_data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] print(&quo ...

  5. Python学习-列表元组字典操作

    一.列表 列表是Python的基本数据类型之一,它是以 [] 括起来的,内部成员用逗号隔开.里面可以存放各种数据类型. # 例如: list2 = ['jason', 2, (1, 3), ['war ...

  6. Python之列表&元组&字典

    今天学习了Python的基本数据类型,做以下笔记,以备查用. 一.列表 列表的常用方法: 1.append()方法 def append(self, p_object): # real signatu ...

  7. python字符串/列表/元组/字典之间的相互转换(5)

    一.字符串str与列表list 1.字符串转列表 字符串转为列表list,可以使用str.split()方法,split方法是在字符串中对指定字符进行切片,并返回一个列表,示例代码如下: # !usr ...

  8. python 中列表 元组 字典 集合的区别

    先看图片解释 (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单.由于我们买一种东西可能不止一次,所以清单中是允许有重复 ...

  9. python字符串 列表 元组 字典相关操作函数总结

    1.字符串操作函数 find 在字符串中查找子串,找到首次出现的位置,返回下标,找不到返回-1 rfind 从右边查找 join 连接字符串数组 replace 用指定内容替换指定内容,可以指定次数 ...

随机推荐

  1. JS获取url参数及url编码、解码

    完整的URL由这几个部分构成:scheme://host:port/path?query#fragment ,各部分的取法如下: window.location.href:获取完整url的方法:,即s ...

  2. hdu 3826

    Squarefree number Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  3. java-cmd-命令行编译和运行java文件

    一.使用的工具 1.javac 2.java 二.命令 项目目录只这样的 D:/project/src/com/example/Child.java D:/project/src/com/exampl ...

  4. 配置 ASP.NET Linux( CentOS 6.5 ) 运行环境 MONO + Jexus

    1.更新系统 在命令行下执行 yum –y update 2.安装必要的软件 yum -y install gcc gcc-c++ bison pkgconfig glib2-devel gettex ...

  5. Java过滤器原理方法

    过滤器可以对资源的请求和相应提供过滤功能,配置在web.xml文件中.过滤器可用来实现以下功能1. 权限过滤2. 登陆和检查验证3. 图像转换4. 数据压缩5. 加密6. 令牌验证7. 触发访问资源的 ...

  6. sql server 向oracle导入表

    选择相应的数据库,右键,任务,选择导出数据 点击下一步 选择Microsoft OLE DB Provider for Sql Server 选择下一步 目标选择.net Framework data ...

  7. HTTP传送协议

    HTTP传送协议--学习笔记 HTTP数据传输格式 基本格式为: 请求或应答行 请求或应答头部 空行 数据 POST传送格式 底层数据通信: 客户端请求: POST /response.php HTT ...

  8. Systematic LncRNA Classification

    Systematic LncRNA Classification From: http://www.arraystar.com/Services/Services_main.asp?ID=307 An ...

  9. [CF738D]Sea Battle(贪心)

    题目链接:http://codeforces.com/contest/738/problem/D 题意:1*n的格子里有a条长为b的船.有一个人射了k发子弹都没打中船,现在问最少再打多少次一定能保证射 ...

  10. [51NOD1393]0和1相等串(前缀和,map)

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1393 题意:中文题面. 把0看成是-1,并且存一遍前缀和.这样 ...