(三)基本数据结构

基本数据结构主要内容

字符串

列表list

元组tuple

字典dictionary

集合set

关于可变类型与不可变类型

迭代

一.字符串字符串拼接

可使用加号“+”拼接字符串,如使用 得到的结果是abcdef

可使用乘号“*”重复字符串,如使用 得到的结果是unununabc

字符串的访问

字符串可以通过下标访问,0为字符串开头第一个字符,-1为字符串结尾第一个字符,-2为倒数第二个字符,以此类推

字符串的切片

冒号‘’:‘’用于字符串的切片,且区间为左闭右开,如[:2]表示字符串第1和第二个字符,[4:]表示从字符串的第五个字符到最后一个字符

字符串的长度

使用len(字符串)

字符串的方法

startswith

startwith方法是用来测试字符串是否以给定字符串开始,返回布尔值

in

in操作符用来检验一个给定字符串是否为另一个字符串的一部分。返回布尔值。

find

find方法用来找出给定字符串在另一个字符串中的位置,返回-1则表示找不到子字符串。

二.列表list

list与数组相似,可以使用下标访问;与字符串相似,可以切片,可以使用加法连接两个list,可以使用乘法重复list中的值;可以使用len返回list的长度。

对列表的操作

追加元素到末尾

append()方法添加

使用+号

插入元素至指定位置

insert(索引号,值)方法插入

删除列表末尾的元素

pop()方法

删除指定位置的元素

pop(索引位置)

列表的元素也可以是列表

可以看作二维数组,同理还有三维四维等等。

列表推导

一种生成新列表的方式,

三.元组tuple

元组与列表比较相似,但元组一经初始化就没办法修改,没有append,insert等方法。

构造空列表使用()

构造单元素列表用(a,)

如果元组内含有可变的元素比如列表,那可以修改列表中的值

元组所谓的不变是指tuple中的元素的指向永远不变,但指向的list本身是可变的

元组可以作为左值

可以如下交换元组内元素的值

四.字典dictionary

字典类似C++中的map,使用“键-值”对储存,具有极快的查找速度,但是以空间换时间的一种方式,对内存消耗大;字典不像元组列表一样能通过下标访问。在字典中,只有不可变对象可作为键使用!(如:字符串,整数,元组,但要注意元组不能含有可变元素)

要注意的是,一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉。

(字典添加元素)

可以用in来判断键是否存在,并可以通过get(key)得到键所对应的值,使用pop(key)可以删除键并清除对应的值

定义字典:

删除操作也可以使用del

字典还可以由二元列表初始化,

当字典键为字符串时,可以使用关键字参数设定,

字典推导(一种创建新字典的方式)

五.集合set

集合是无序无重复的数据结构,支持添加删除等操作,支持交并差等集合操作,同样支持集合推导

空集合用set()

集合初始化用{}括住逗号分隔

添加元素,add()

集合里的值也需要是不可变值

集合修改数据只能先删除后添加

集合的逻辑运算

集合推导

六.关于可变类型与不可变类型

可变数据类型:列表与字典

不可变数据类型:整型int、浮点型float、字符串型string和元组

区别:python中的不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象,内部会有一个引用计数来记录有多少个变量引用这个对象;可变数据类型,允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份(即可变类型占用了更多的内存)。

七.迭代

Python的for循环抽象程度要高于C的for循环,因为Python的for循环不仅可以用在list或tuple上,还可以作用在其他可迭代对象上。只要是可迭代对象,无论有无下标,都可以迭代,比如dict就可以迭代:

集合的迭代:

列表的迭代:

字符串的迭代:

判断一个对象是否可以迭代

引入collections模块的Iterable类型判断:

在list中实现同时迭代索引和元素本身

(使用enumerate函数可以把一个list变成索引-元素对)

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171213G0MEV500?refer=cp_1026

扫码关注云+社区