python 中 list 的各项操作
最近在学习 python 语言。大致学习了 python 的基础语法。觉得 python 在数据处理中的地位和它的 list 操作密不可分。
特学习了相关的基础操作并在这里做下笔记。
- '''
- Python --version Python 2.7.11
- Quote : https://docs.python.org/2/tutorial/datastructures.html#more-on-lists
- Add by camel97 2017-04
- '''
list.append(x) #在列表的末端添加一个新的元素-
Add an item to the end of the list; equivalent to
a[len(a):] = [x].
list.extend(L)#将两个 list 中的元素合并到一起-
Extend the list by appending all the items in the given list; equivalent to
a[len(a):] = L.
list.insert(i, x)#将元素插入到指定的位置(位置为索引为 i 的元素的前面一个)-
Insert an item at a given position. The first argument is the index of the element before which to insert, so
a.insert(0, x)inserts at the front of the list, anda.insert(len(a), x)is equivalent toa.append(x).
list.remove(x)#删除 list 中第一个值为 x 的元素(即如果 list 中有两个 x , 只会删除第一个 x )-
Remove the first item from the list whose value is x. It is an error if there is no such item.
list.pop([i])#删除 list 中的第 i 个元素并且返回这个元素。如果不给参数 i ,将默认删除 list 中最后一个元素-
Remove the item at the given position in the list, and return it. If no index is specified,
a.pop()removes and returns the last item in the list. (The square brackets around the i in the method signature denote that the parameter is optional, not that you should type square brackets at that position. You will see this notation frequently in the Python Library Reference.)
list.index(x)#返回 list 中 , 值为 X 的元素的索引- Return the index in the list of the first item whose value is x. It is an error if there is no such item.
list.count(x)#返回 list 中 , 值为 x 的元素的个数-
Return the number of times x appears in the list.
demo:
1 #-*-coding:utf-8-*-
2 L = [1,2,3] #创建 list
3 L2 = [4,5,6]
4
5 print L
6 L.append(6) #添加
7 print L
8 L.extend(L2) #合并
9 print L
10 L.insert(0,0) #插入
11 print L
12 L.remove(6) #删除
13 print L
14 L.pop() #删除
15 print L
16 print L.index(2)#索引
17 print L.count(2)#计数
18 L.reverse() #倒序
19 print Lresult:
[1, 2, 3]
[1, 2, 3, 6]
[1, 2, 3, 6, 4, 5, 6]
[0, 1, 2, 3, 6, 4, 5, 6]
[0, 1, 2, 3, 4, 5, 6]
[0, 1, 2, 3, 4, 5]
2
1
[5, 4, 3, 2, 1, 0]list.sort(cmp=None, key=None, reverse=False)Sort the items of the list in place (the arguments can be used for sort customization, see sorted() for their explanation).
1.对一个 list 进行排序。默认按照从小到大的顺序排序
L = [2,5,3,7,1]
L.sort()
print L ==>[1, 2, 3, 5, 7] L = ['a','j','g','b']
L.sort()
print L ==>['a', 'b', 'g', 'j']2.reverse 是一个 bool 值. 默认为 False , 如果把它设置为
True, 那么这个 list 中的元素将会被按照相反的比较结果(倒序)排列.# reverse is a boolean value. If set to
True, then the list elements are sorted as if each comparison were reversed.L = [2,5,3,7,1]
L.sort(reverse = True)
print L ==>[7, 5, 3, 2, 1] L = ['a','j','g','b']
L.sort(reverse = True)
print L ==>['j', 'g', 'b', 'a']3.key 是一个函数 , 它指定了排序的关键字 , 通常是一个 lambda 表达式 或者 是一个指定的函数
#key specifies a function of one argument that is used to extract a comparison key from each list element:
key=str.lower. The default value isNone(compare the elements directly).#-*-coding:utf-8-*-
#创建一个包含 tuple 的 list 其中tuple 中的三个元素代表名字 , 身高 , 年龄
students = [('John', 170, 15), ('Tom', 160, 12), ('Dave', 180, 10)]
print students ==>[('John', 170, 15), ('Tom', 160, 12), ('Dave', 180, 10)] students.sort(key = lambda student:student[0])
print students ==>[('Dave', 180, 10), ('John', 170, 15), ('Tom', 160, 12)]#按名字(首字母)排序 students.sort(key = lambda student:student[1])
print students ==>[('Tom', 160, 12), ('John', 170, 15), ('Dave', 180, 10)]#按身高排序 students.sort(key = lambda student:student[2])
print students ==>[('Dave', 180, 10), ('Tom', 160, 12), ('John', 170, 15)]#按年龄排序4.cmp 是一个指定了两个参数的函数。它决定了排序的方法。
#cmp specifies a custom comparison function of two arguments (iterable elements) which should return a negative, zero or positive number depending on whether the first #argument is considered smaller than, equal to, or larger than the second argument:
cmp=lambda x,y: cmp(x.lower(), y.lower()). The default value isNone.#-*-coding:utf-8-*-
students = [('John', 170, 15), ('Tom', 160, 12), ('Dave', 180, 10)]
print students ==>[('John', 170, 15), ('Tom', 160, 12), ('Dave', 180, 10)] #指定 用第一个字母的大写(ascii码)和第二个字母的小写(ascii码)比较
students.sort(cmp=lambda x,y: cmp(x.upper(), y.lower()),key = lambda student:student[0])
print students ==>[('Dave', 180, 10), ('Tom', 160, 12), ('John', 170, 15)] #指定 比较两个字母的小写的 ascii 码值
students.sort(cmp=lambda x,y: cmp(x.lower(), y.lower()),key = lambda student:student[0])
print students ==>[('Dave', 180, 10), ('John', 170, 15), ('Tom', 160, 12)] #cmp(x,y) 是python内建立函数,用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1cmp 可以让用户自定义大小关系。平时我们认为 1 < 2 , 认为 a < b。
现在我们可以自定义函数,通过自定义大小关系(例如 2 < a < 1 < b) 来对 list 进行指定规则的排序。
当我们在处理某些特殊问题时,这往往很有用。
如果以上的叙述有误。欢迎大家批评指正。
python 中 list 的各项操作的更多相关文章
- 【转】python 历险记(四)— python 中常用的 json 操作
[转]python 历险记(四)— python 中常用的 json 操作 目录 引言 基础知识 什么是 JSON? JSON 的语法 JSON 对象有哪些特点? JSON 数组有哪些特点? 什么是编 ...
- 在Python中使用lambda高效操作列表的教程
在Python中使用lambda高效操作列表的教程 这篇文章主要介绍了在Python中使用lambda高效操作列表的教程,结合了包括map.filter.reduce.sorted等函数,需要的朋友可 ...
- python中的MySQL数据库操作 连接 插入 查询 更新 操作
MySQL数据库 就数据库而言,连接之后就要对其操作.但是,目前那个名字叫做qiwsirtest的数据仅仅是空架子,没有什么可操作的,要操作它,就必须在里面建立“表”,什么是数据库的表呢?下面摘抄自维 ...
- python中mysql数据库的操作-sqlalchemy
MySQLdb支持python2.*,不支持3.* ,python3里面使用PyMySQL模块代替 python3里面如果有报错 django.core.exceptions.ImproperlyC ...
- python 历险记(四)— python 中常用的 json 操作
目录 引言 基础知识 什么是 JSON? JSON 的语法 JSON 对象有哪些特点? JSON 数组有哪些特点? 什么是编码和解码? 常用的 json 操作有哪些? json 操作需要什么库? 如何 ...
- python 中文件夹的操作
文件有两个管家属性:路径和文件名. 路径指明了文件在磁盘的位置,文件名原点的后面部分称为扩展名(后缀),它指明了文件的类型. 一:文件夹操作 Python中os 模块可以处理文件夹 1,当前工作目录 ...
- Python中字典的相关操作
1. Python类似于Java中的哈希表,只是两种语言表示的方式是不一样的,Python中的字典定义如下: 在Python中是一种可变的容器模型,它是通过一组键(key)值(value)对组成,这种 ...
- Python中文件路径名的操作
1 文件路径名操作 对于文件路径名的操作在编程中是必不可少的,比如说,有时候要列举一个路径下的文件,那么首先就要获取一个路径,再就是路径名的一个拼接问题,通过字符串的拼接就可以得到一个路径名.Pyth ...
- 超详细!盘点Python中字符串的常用操作
在Python中字符串的表达方式有四种 一对单引号 一对双引号 一对三个单引号 一对三个双引号 a = 'abc' b= "abc" c = '''abc''' d = " ...
随机推荐
- 不带插件 ,自己写js,实现批量上传文件及进度显示
今天接受项目中要完成文件批量上传文件而且还要显示上传进度,一开始觉得这个应该不是很麻烦,当我在做的时候遇到了很多问题,很头疼啊. 不过看了别人写的代码,自己也测试过,发现网上好多都存在一些问题,并不是 ...
- CSharpGL(42)借助帧缓存实现渲染到纹理(RenderToTexture)
CSharpGL(42)借助帧缓存实现渲染到纹理(RenderToTexture) 渲染到纹理(Render To Texture)是实现很多OpenGL高级效果的一个基础.本文记录了如何用CShar ...
- Entity Framework入门教程:创建实体数据模型
下图为一个已经创建好的数据库表关系 实体数据模型的创建过程 在Visual Studio项目中,右键程序集菜单,选择[添加]->[新建项],在[添加新项窗口]中选择[ADO.NET实体数据模型] ...
- mybatis存取blob对象+@Cacheable实现数据缓存
参考文档: http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-cache/ 需求场景: 当前业务通过第三方接口查询一个业务数据, ...
- 消耗CPU的程序
昨天领导交代客户需要一个可以测试CPU性能的脚本,问题简化下就是说要做一个可以手动设置对CPU产生消耗的程序.心想哪有这种脚本,或许性能测试工具还差不多.琢磨了下,或许用死循环可以达到差不多的效果,但 ...
- 关于在eclipse上部署Tomcat时出现8080等端口被占用问题的解决方法
问题描述: 在eclipse中部署Tomcat时,出现如下错误. 解决方法如下: 方法一: 1.开始->cmd->输入命令netstat -ano出现下图所示(注意下边显示有些错位,最后一 ...
- voa 2015 / 4 / 14
Even with falling oil prices and strong U.S. growth, the head of the International Monetary Fund sai ...
- 学习JavaScript时的三部分
JavaScript = ECMAScript + DOM + BOM 其中ECMAScript表示的是基本语法,包括我们实现JS的基本语法,如变量的声明.基本的语句(if.for.switch等) ...
- jmeter-命令行执行脚本
日常测试过程中发现,在大数量并发时,jmeterGUI界面时长宕机.卡死,在这种情况下我们就需要使用命令行来执行脚本了(非GUI), 命令行执行首先就必须要配置环境变量,如同JAVA-HOME一样,这 ...
- Redis源码阅读之主从复制——Slave视角
Redis主从复制 为了提高性能和系统可用,Redis都会做主从复制,一来可以分担主库压力,二来在主库挂掉的时候从库依旧可以提供服务.Redis的主从复制是异步复制,返回结果给客户端和同步命令到从库是 ...