数据结构的分类依据?基本的“数组”在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. java的报表下载代码excel

    /** * 汇总报表数据下载 * */ private ModelAndView exportSummaryDatadown(HttpServletRequest request, HttpServl ...

  2. C语言中的结构体,结构体数组

    C语言中的结构体是一个小难点,下面我们详细来讲一下:至于什么是结构体,结构体为什么会产生,我就不说了,原因很简单,但是要注意到是结构体也是连续存储的,但要注意的是结构体里面类型各异,所以必然会产生内存 ...

  3. Linux Shell脚本面试25问

    Q:1 Shell脚本是什么.它是必需的吗? 答:一个Shell脚本是一个文本文件,包含一个或多个命令.作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件( ...

  4. 在包a中新建一个类A,在类A中有一个int add(int m)方法,用来求1+2+…+m 的和。在包b中新建一个类B,在类B中有一个int cheng(int n)方法,用来求n! 的结果。在包c中新建一个主类C,调用A、B中的方法输出1+2+…+30的和, 以及5!的计算结果。

    package a; public class A { public void add(int m) { int sum=0; for (int i = 1; i <=m; i++) { sum ...

  5. 【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

    原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http:/ ...

  6. windows跟linux文件共享

    方法一:windows下的winscp工具 前提条件:windows能够ping通linux:linux关闭防火墙,/etc/init.d/iptables stop 在windows下运行winsc ...

  7. 制作一个属于自己的BHO吧!(C#) (转)

    摘自:http://tech.ddvip.com/2013-05/1369758775196257.html BHO(Browser Helper Object)是插件,它寄存在IE浏览器中运行.在咱 ...

  8. 你是码农还是Geek?

    现在深深的体会到,不仅仅人与人的差别是巨大的,程序员与程序员之间的差别同样很明显的. 普通的程序员仅仅是完成自己的任务,完成任务后不思进取,不再修改自己的代码,不再去想有没有更好的实现方式,其实重构自 ...

  9. 手机页面中的meta标签

    以前看书的时候,觉得meta标签就只有一个charset对于我来说是有用的.前段时间有个学弟让我写个手机版的网页,我才知道原来meta标签有那么多学问. meta指元素可提供有关页面的元信息(meta ...

  10. Java中的内省

    为什么要学内省? •开发框架时,经常需要使用java对象的属性来封装程序的数据,每次都使用反射技术完成此类操作过于麻烦,所以sun公司开发了一套API,专门用于操作java对象的属性.   什么是Ja ...