【python入门笔记】(三)基本数据结构

基本数据结构

主要内容

  • 字符串
  • 列表list
  • 元组tuple
  • 字典dictionary
  • 集合set
  • 关于可变类型与不可变类型
  • 迭代

一.字符串

字符串拼接

可使用加号“+”拼接字符串,如使用'abc'+'def' 得到的结果是abcdef
这里写图片描述
可使用乘号“*”重复字符串,如使用3*'un'+'abc' 得到的结果是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)可以删除键并清除对应的值
这里写图片描述

定义字典:x={'aa':123,'abc':2,(1,2,3):4,'def':2}
删除操作也可以使用del
这里写图片描述

字典还可以由二元列表初始化,
这里写图片描述

当字典键为字符串时,可以使用关键字参数设定,
这里写图片描述

字典推导(一种创建新字典的方式)
这里写图片描述

五.集合set

集合是无序无重复的数据结构,支持添加删除等操作,支持交并差等集合操作,同样支持集合推导
空集合用set()
这里写图片描述

集合初始化用{}括住逗号分隔
这里写图片描述

添加元素,add()
这里写图片描述

集合里的值也需要是不可变值
这里写图片描述

集合修改数据只能先删除后添加
这里写图片描述

集合的逻辑运算
这里写图片描述

集合推导
这里写图片描述

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

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

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

七.迭代

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

集合的迭代:
这里写图片描述

列表的迭代:
这里写图片描述

字符串的迭代:
这里写图片描述

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

引入collections模块的Iterable类型判断:
这里写图片描述

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

(使用enumerate函数可以把一个list变成索引-元素对)
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值