Python3数据结构

列表:

Python列表是可变的,这是它区别于字符串数组和元组的最重要的特点。列表可以修改,而字符串和元组不能。

 

以下是Python中列表的描述方法:

方法

描述

list.append(x)

将元素添加到列表结尾

list.extend(L)

通过添加指定列表的所有元素来扩充列表

list.insert(i,x)

在指定位置插入一个元素,第一个参数是准备插入到其前面的那个元素的索引

list.remove(x)

删除列表中值为x的第一个元素,如果没有这个元素会返回一个错误。

list.pop([i])

从列表的指定位置移除元素,并将其返回。如果没有指定索引,a.pop()会返回最后一个元素。元素随机从列表中被移除。

list.clear()

移除列表中所有项

list.index(x)

返回列表中第一个值为x元素的索引。如果没有匹配的元素就返回一个错误。

list.count(x)

返回x在列表中出现的次数

list.sort()

对列表中的元素进行排序

list.reverse()

倒排列表中的元素

list.copy()

返回列表的浅复制

 

 

 

类似于insert、remove、sort等修改列表的方法是没有返回值的。

将列表当作堆栈使用:

列表方法使得列表可以很方便的作为一个堆栈来说使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放。用gappend()方法可以把一个元素添加到堆栈顶。用不指定索引的pop()方法可以把一个元素从堆栈顶释放出来。

 

 

 

将列表当作队列使用,只是在队列里第一加入的元素第一个取出来,但是这样拿列表用作这样的目的效率不高。在列表的最后添加或弹出的元素速度快。然而在列表里插入或者从头部弹出速度却不快。(因为所有其他元素逗得一个一个移动)

 

 

 

列表推导式

列表推导式提供了从序列创建列表的简单途径。通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,或者根据确定判断条件创建子序列。

每个列表推导式都在for之后跟一个表达式,然后有0到多个for或if子句,返回结构是一个根据表达从其后的for和if上下文环境中生成出来的列表。如果希望表达式推导出一个元组,就必须使用括号。

 

 

 

对序列中每个元素的逐一调用某方法

 

 

 

我们可以使用if子句作为过滤器

 

 

 

以下还有一些关于循环和其他技巧的演示:

 

 

 

列表推导式可以使用复杂表达式或嵌套函数

 

 

 

嵌套列表解析

Python的列表还可以嵌套

 

 

也可以使用以下方法实现:

 

 

del语句

使用del语句可以从一个列表中依索引而不是值来删除一个元素。这与使用pop()返回一个值不同,可以用del语句从列表中删除一个切割,或者情况整个列表

 

 

也可以使用del删除实体变量

del a

 

元组和序列

元组是由 若干逗号跟个的值

 

 元组在输出时总有括号的,以便于正确表达嵌套结构,在输入时可能有或者没有括号,不过括号通常是必须的(如果元组是更大的表达式的一部分)

 

集合

集合是一个无须不重复的集,基本功能包括关系测试和消除重复元素。

可以使用大括号{}创建集合。注意:如果要创建一个空集合,必须使用set()而不是{};后者创建一个空的字典。

 

 

集合也支持推导式:

字典

另一个非常常用的Python内建数据类型是字典。

序列是以连续的整数为索引,与此不同的是,字典以关键字为索引,关键字可以是任意不可变类型,通常用字符串或数值。

理解字典的最佳方式就是把它看作无序的键=>值对集合。同一个字典内,关键必须互不相同。

一堆大括号创建一个空的字典:{}

 

 

构造函数dict()直接从键值对元组列表中构建字典。如果有固定格式,列表推导式指定特定的键值对:

 

 

字典推到可以用来创建任意键和值的表达式词典:

 

 如果关键字只是简单的字符串,使用关键字参数指定键值对有时候会更方便:

 

 

遍历技巧

在字典遍历时,关键字和对应的值可以使用items()方法同时解读出来:

 

 

在序列中遍历时,索引位置和对应值可以使用enumerate()函数同时得到:

 

 

同时遍历两个或更多的序列,可以使用zip()组合:

 

 

要反向遍历一个序列,首先指定这个序列,然后调用reversed()函数:

 

 

要按顺序遍历一个序列,使用sorted()函数返回一个已排序的序列,不修改原值:

 

转载于:https://www.cnblogs.com/wanghao-boke/p/11474390.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/384835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sed、awk工具

ed sed意为流编辑器(Stream Editor),在Shell脚本和Makefile中作为过滤器使用非常普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出。sed和vi都源于早期UNIX的ed工具,所…

C语言正则表达式

POSIX规定了正则表达式的C语言库函数,详见regex(3)。我们已经学习了很多C语言库函数的用法,读者应该具备自己看懂man手册的能力了。本章介绍了正则表达式在grep、sed、awk中的用法,学习要能够举一反三,请读者根据regex(3)自己总结…

makefile通用版本

实际当中程序文件比较大,这时候对文件进行分类,分为头文件、源文件、目标文件、可执行文件。也就是说通常将文件按照文件类型放在不同的目录当中,这个时候的Makefile需要统一管理这些文件,将生产的目标文件放在目标目录下&#xf…

Python3OS文件/方法

Python3OS文件/方法 os模块提供了非常丰富的方法用来处理文件和目录。 方法 描述 os.access(path,mode) 检验权限模式 os.chdir(path) 改变当前工作目录 os.chflags(path,flags) 设置路径的标记为数字标记 os.chmod(path,mode) 更改权限 os.chown(path,uid,gid) 更改…

Python3文件

open()方法 Python open()方法永于打开一个文件,并返回文件对象,并对文件进行处理过程中都需要用到这个方法,如果该文件无法被打开,则抛出OSError 注意:使用open()方法一定要保证关闭文件对象,即调用close(…

Python3输入输出

Python两种输出值的方式,表达式语句和print()函数。 第三种方式是使用文件对象的write()方法,标准输出文件可以用sys.stdout的引用。 如果你希望输出的形式更加多样,可以使用str.fomat()函数来格式化输出值。 如果你希望将输出的值转化成字符…

动态库加载顺序

1.编译目标代码时指定的动态库搜索路径; 2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径; 3.配置文件/etc/ld.so.conf中指定的动态库搜索路径; 4.默认的动态库搜索路径/lib; 5.默认的动态库搜索路径/usr/lib。 转载于:https://ww…

Python3正则表达式

正则表达式是一个特殊的字符序列,他能帮助你方便的检查一个字符串是否与某种模式匹配。re.match函数 re.match尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回一个none。 函数语法: re.match(pat…

C/C++输入

fgets(str,n,stdin) 从键盘输入一行,替代gets()。读取到n-1字节时或换行符时终止,如果是文件的话,读到文件结尾也会停止 getline(cin,str) str的类型必须是string类,它是C特定的字符串类,区别于C的char *数据类型。 ci…

strlen和sizeof的区别

C语言中没有字符串,用的是字符数组来模拟字符串。 C风格的字符串时字符数组然后在末尾加0表示结尾。 在C语言中有strlen和sizeof两个函数求字符数组的长度函数,他们俩的区别就是是否把最后的结束标志也加上去。 strlen是不加的,他表示字符串的…

shell编程练习题

求2个数之和计算1-100的和将一目录下所有的文件的扩展名改为bak编译当前目录下的所有.c文件:打印root可以使用可执行文件数,处理结果: roots bins: 2306打印当前sshd的端口和进程id,处理结果: sshd Port&&pid: 22 5412输出本机创建20…

shell编程题(一)

求2个数之和 #!/bin/bashfunction add {if(( $# < 2 )); thenecho "The arg int correct"elsesum$(($1$2))echo $sumfi }add 1 add 1 2 运行结果&#xff1a; exbotubuntu:~/shareWin/linux/shell$ ./sum.sh 1 2The arg int correct3 $#&#xff1a;相当于C语言…

vimset

vim ~./vimrc set nocompatible "去掉有关vi一致性模式&#xff0c;避免以前版本的bug和局限 set nu! "显示行号 set guifontLuxi/ Mono/ 9 " 设置字体&#xff0c;字体名称和字号 filetype on …

shell编程题(二)

计算1-100之和 #!/bin/bashsum0 for i in seq 1 100;do #符号不是单引号 是 1左边的符号sum$[$i $sum ] done echo $sum #!/bin/bashi0 n1              #定义循环变量 while [ $n -lt 101 ];do  #循环变量小于101 i$(( $i $n))        #累加 n$(( …

vim命令大全

1. vim模式 正常模式&#xff08;按Esc或Ctrl[进入&#xff09; 左下角显示文件名或为空 插入模式&#xff08;按i进入&#xff09; 左下角显示--INSERT-- 可视模式&#xff08;按v进入&#xff09; 左下角显示--VISUAL-- 替换模式&#xff08;按r或R开始&#xff09; 左下角显…

signal()函数

函数原型 void (*signal(int sig,void(*func)(int)))(int); 指定使用sig指定的信号编号处理信号的方法。参数func指定程序可以处理信号的三种方式之一&#xff1a; l 默认处理(SIG_DFL)&#xff1a; 信号由该特定信号的默认动作处理l 忽略信号&#xff08;SIG_IGN&a…

setitimer()函数

定时器时间函数 struct itimerval&#xff1a;struct itimerval *new_value&#xff0c;其定义如下&#xff1a;struct itimerval {struct timeval it_interval; /*next value*/struct timeval it_value; /*current value*/};struct timeval {long tv_sec; /*seconds*/lonng t…

shell编程题(三)

将一目录下所有的文件的扩展名改为bak #! /bin/bashfor i in ls domv $i ${i%%.*}.bak done ${i%%.*} 截掉一个变量字符串第一个"."以及其右侧的所有字符&#xff0c;即最短前缀匹配。 #! /bin/bashdir./ #指定文件夹for file in $dir*.txt #指定文件夹下面文件类型…

VMware安装VMwaretools

默认点击“安装VMware Tools&#xff08;T&#xff09;”选项下载好安装包 下载的安装包放在计算机的media目录下 进入/media/ubuntu14-04/VMware Tools目录&#xff1a; cd /media/ubuntu14-04/VMware Tools 将安装包复制到tmp文件夹下&#xff1a; cp VMwareTools-10.0.5-322…

shell编程题(四)

编译当前目录下的所有.c文件 #!/bin/bashif [ $# -lt 1 ] ;then #如果输入参数小于1则报错 $# C语言中的argv[0] 输入参数个数echo "Please follow up file.c!"echo "eg: ./make.sh xxx.c"exit fiif [[ $2 "debug" ]] ;then #如果第三个参数…