Python学习笔记——数据类型list、tuple、dict、set_bisect list的元素是tuple-程序员宅基地

技术标签: Python  

内容整理于廖雪峰官网和菜鸟教程

list可变用[] , tuple不可变用()
dict={} set()均不可放入可变元素

list和tuple
list
  • 定义
    listA=[‘AAA’,‘bbb’,‘ccc’]
    list的元素可以是另一个list
    listB=[‘ddd’,listA]
    listC=[‘ddd’,[‘eee’,‘fff’]]
    len(listC)=2 len计算元素数
    list的元素可以是不同类型
    listD=[‘ggg’,123,Ture]
  • 索引
    索引从0开始,越界报错
    listA[0]=‘AAA’
    listA[1]='bbb’正数第一个
    listA[-1]='ccc’倒数第一个
    可以作为二维数组来索引
    listC=[‘ddd’,[‘eee’,‘fff’]]
    listC[1][0]=‘eee’
  • append将元素插入末尾
    listA.append(‘123’)
    append将list类型元素插入list时,插入list作为一个元素
>>>istA=['AAA','bbb','ccc']
>>>e=['abc','def'] 
>>>listA.append(e) 
>>>listA
listA=['AAA','bbb',['abc','def']]
  • extend批量增加,多个元素需要作为list类型的参数引用
    listA.extend(‘abc’)——listA=[‘AAA’,‘bbb’,‘ccc’,‘a’,‘b’,‘c’]
    extend将list类型插入list时,list中的元素被拆开
>>>istA=['AAA','bbb','ccc']
>>>e=['abc','def'] 
>>>listA.extend(e) 
>>>listA
listA=['AAA','bbb','ccc','abc','def']
  • pop删除最后一个元素
    listA.pop()
    listA.pop(i) #i是索引位置
  • remove删除指定元素
    listA.remove(‘AAA’)
  • insert在指定位置插入
    list名称.insert(位置索引,元素)
    listA.insert(1,‘ggg’)
  • 元素赋值
    listA[0]=‘hahaha’
tuple
  • 定义
    一旦初始化就不能更改的有序列表,指向不变,但如果指向list,list内的元素可以变
    tupleA=(‘aaa’,‘bbb’,‘ccc’)
    只有一个元素的tuple需要加,tupleB=(1,)
    可以定义空tuple,tupleC=()
  • 删除
    tuple不允许删除元素值,可以用del tupleA删除整个tuple
  • 操作
    可以进行索引、切片、迭代、 + + +连接、*复制
  • 函数
    cmp(tuple1,tuple2) python3没有cmp函数,需要引入operator模块
    len(tuple)
    max(tuple)
    min(tuple)
    tuple(seq)将list生成tuple
dict和set

dict={} set()均不可放入可变元素

dict
  • 描述
    字典,其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度

和list比较,dict使用hash算法,有以下几个特点:查找和插入的速度极快,不会随着key的增加而变慢;需要占用大量的内存,内存浪费多。而list相反:查找和插入的时间随着元素的增加而增加;占用空间小,浪费内存很少。

  • 定义
    d = {key1 : value1, key2 : value2 }
>>> d = {
    'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95
  • 插入key-value
    d[‘Adam’] = 67
    value可以是任何数据类型,但key必须是不可变的。每个key的value是唯一的,对一个key多次放入value,只保留最后一个

  • 删除
    d.pop(‘Michael’),删除key对应value也删除
    del d,删除整个dict

  • 判断key存在

  1. in判断
    ‘Bob’ in d
  2. get() 判断,不存在则返回None(Python交互不显示)(括号内无第二参数)或者第二参数的指定值
    d.get(‘Michael’)
    d.get(‘Wayne’,-1)
set

一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key

  • 定义
    创建set需要以list作为输入集合,输入list中的重复元素将自动被过滤,可以使用{}或者set()函数创建集合。 创建空集必须set(),{}会创建一个新字典。
s1=set('apple')
print(s1)
s2=set(('apple'))
print(s2)
s3=set(('apple',))#采取这种方式创建单一元素集合
print(s3)
{
    'p', 'a', 'l', 'e'}
{
    'p', 'a', 'l', 'e'}
{
    'apple'}
  • 判断元素是否存在
    x in s 存在返回True不存在返回False
  • 添加
    s.add(4)
    s.update(x) 参数可以是list\dict\tuple
  • 删除
    s.remove() 没有该元素则报错
    s.discard() 元素不存在也不会报错
    s.pop() 脚本模式随机删除,交互模式删除排序后集合第一个元素
  • 清空set
    s.clear()
  • 交集、并集
    set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集s1&s2、并集s1 | s2 等操作
>>> a = set('abracadabra') 
>>> b = set('alacazam')
>>> a {
    'a', 'r', 'b', 'c', 'd'}
>>> a - b # 集合a中包含而集合b中不包含的元素 
{
    'r', 'd', 'b'} 
>>> a | b # 集合a或b中包含的所有元素 
{
    'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'} 
>>> a & b # 集合a和b中都包含了的元素 
{
    'a', 'c'} 
>>> a ^ b # 不同时包含于a和b的元素 
{
    'r', 'd', 'b', 'm', 'z', 'l'}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/violette_lx/article/details/102585187

智能推荐

基于opencv的人脸检测与识别(python)(1)-程序员宅基地

文章浏览阅读514次。基于opencv的人脸检测,再使用tensorflow的框架以及keras库通过卷积神经网络对获取的人脸数据进行训练,生成训练模型,并对实时图片进行人脸识别。

Numbers on Tree_k. numbers on tree-程序员宅基地

文章浏览阅读160次。D. Numbers on Treetime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputEvlampiy was gifted a rooted tree. The vertices of the tree are numbered..._k. numbers on tree

软件测试工程师面试题-测试概念篇_面试测试工程师概念性问题有哪些-程序员宅基地

文章浏览阅读901次。转载于:https://www.cnblogs.com/mrwuzs/p/7976534.html_面试测试工程师概念性问题有哪些

0910-12学习记录-OFDM细节描述_ofdm子载波流数-程序员宅基地

文章浏览阅读899次。PPDU编码过程总览编码过程包含了很多细节的步骤,在以下的细节条款有很详细的描述。接下来的总览主要是为了促进对于这些细节的理解。生成PLCP前导码字段,包含10个短训练序列(用来做AGC增益控制,分集选择,时间的同步获取以及在接收端的粗频偏估计)和两个重复的长训练序列(用来做信道估计以及接收端的精准频偏估计)前面有保护间隔(GI)。具体的细节描述在 17.3.3.17.3.3.描述PLCP..._ofdm子载波流数

OSChina 中秋节乱弹 ——加班比抢了我的小鱼干,更让我难过!-程序员宅基地

文章浏览阅读234次。2019独角兽企业重金招聘Python工程师标准>>> ...

SpringBoot引入MyBatis_springboot mybatis jar maven引入-程序员宅基地

文章浏览阅读128次。首先进入spring官网,添加依赖,然后生成项目。打开Idea,然后导入刚才生成的项目文件。测试不用集成组件,要不然下载会下载很长时间。找到maven插件,导入必要的jar包。_springboot mybatis jar maven引入

随便推点

Shell根据文本内容批量修改文件名(附完整代码)_linux shell while批量改名-程序员宅基地

文章浏览阅读3.1k次。Shell根据文本内容批量修改文件名_linux shell while批量改名

“计算机系统概述”学习笔记_程序计数器怎么计算下一条指令的地址-程序员宅基地

文章浏览阅读2.2k次。文章目录机器字长存储器组成运算器组成控制器组成计算机系统的层次结构指令执行过程源程序翻译成可执行文件的过程机器字长计算机进行一次整数运算所能处理的二进制数据的位数。存储器组成组件由大到小(大包含小)依次为:计算机系统=计算机硬件系统+计算机软件系统计算机硬件系统=存储器+控制器+运算器+输入设备+输出设备存储器=主存储器(内存储器)+辅助存储器(外存储器)主存储器=地址寄存器(MAR)+存储体+数据寄存器(MDR)+时序控制逻辑存储体=若干存储单元存储单元=若干存储元件每个存储元件存_程序计数器怎么计算下一条指令的地址

Scala编写JedisPoolUtils工具类_jedis scala-程序员宅基地

文章浏览阅读1.5k次。package com.cloudera.utilsimport redis.clients.jedis.{Jedis, JedisPool, JedisPoolConfig}object JedisPoolUtils extends Serializable { @transient private var pool: JedisPool = null def makePoo..._jedis scala

MySQL 使用AVG聚合函数时,保留两位小数的方法_mysql avg保留两位小数-程序员宅基地

文章浏览阅读3.1k次。SELECT ( CASE WHEN platform_parameter IS NULL THEN page ELSE platform_parameter END ) AS page, sum(pv) AS pv, sum(uv) AS uv, CAST(AVG(time) AS DECIMAL(10,2)) as timeFROM t_page_stat_daily tLEFT JOIN t_app_dictionary d ON t.app_id = d._mysql avg保留两位小数

QOS_qos双色分离-程序员宅基地

文章浏览阅读1k次,点赞3次,收藏9次。QOS按权重进行资源分配,进行资源协调(1) 甄别流量(哪些有用,哪些无用----重要程度)(2) 分析流量诉求(有哪些要求----带宽、时延)(3) 细化流量诉求(对哪些参数比较敏感)队列机制 拥塞避免一、 流量分类TOS位,位于包头为之后,8位二进制规定:数字越大,越容易从接口出去(优先级越高)不合理之处:当队列满时,若再有较重要流量要进行排队,将会被拒绝DSCP:插分..._qos双色分离

聚类算法系列---DBSCAN密度聚类算法_聚类公式 ci min y dbscan-程序员宅基地

文章浏览阅读430次。DBSCAN(Density-Based Spatial Clustering of Application with Noise)思想:用一个点的邻域内的邻居点数来衡量该店所在的空间密度,根据密度来判定将样本划分到哪个簇,对于同一个簇里面的样本是紧密相连的。在进行聚类的时候事先不知道cluster的数目。基本概念设数据集X={x1,x2,....,xn}Eps:定义密度时的邻域半径..._聚类公式 ci min y dbscan