列表

列表的使用:

列表是可变数据类型,因此列表的方法,都是直接修改列表原始值

list = ["panda","chimpanzee","zebra","lion","cat"]

(1)通过下标访问列表中的元素,下标从0开始计数

 >>> list[0]
'panda'
>>> list[2]
'zebra'
>>> list[-1] 倒着访问,下标从【-1】开始
'cat'
>>> list[-5]
'panda'

(2)切片  list = ["panda","chimpanzee","zebra","lion","cat"]

 >>> list[1:4]
['chimpanzee', 'zebra', 'lion'] #顾头不顾尾
>>> list[1:-1]
['chimpanzee', 'zebra', 'lion'] #顾头不顾尾,下标【1】为'chimpanzee',【-1】为从右边数第一个
>>> list[0:3]
['panda', 'chimpanzee', 'zebra'] #0表示从第一个开始取
>>> list[:3]
['panda', 'chimpanzee', 'zebra'] #从第一个开始取也可以为空表示
>>> list[3:]
['lion', 'cat'] #从下标【3】取到最后一个,包括最后一个
>>> list[3:-1]
['lion']
>>> list[0::2]
['panda', 'zebra', 'cat'] #此处的2表示,每隔一个元素,取一个
>>> list[::2]
['panda', 'zebra', 'cat']
>>> list[2:2] ------ [] #此处取值为空
list[:] 对list全部切片,可以起到复制的作用,同时 list[:]也可以使用list所有的方法

(2)列表的常用操作

追加:append()加到列表最尾

 >>> zoo
['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone']
>>> zoo.append("追加")
>>> zoo
['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', '追加']
>>>

插入: 想插入哪里,下标就写哪里

 zoo
['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', '追加']
>>> zoo.insert(1,"从chimpanz前插入")
>>> zoo
['panda', '从chimpanz前插入', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', '追加']
>>> zoo.insert(4,"从lion前插入")
>>> zoo
['panda', '从chimpanz前插入', 'chimpanzee', 'zebra', '从lion前插入', 'lion', 'cat', 'newone', '追加']
>>>

修改:

 >>> zoo
['panda', '从chimpanz前插入', 'chimpanzee', 'zebra', '从lion前插入', 'lion', 'cat', 'newone', '追加']
>>> zoo[1]="换成gorilla"
>>> zoo
['panda', '换成gorilla', 'chimpanzee', 'zebra', '从lion前插入', 'lion', 'cat', 'newone', '追加']
>>>

删除:(有三种删除方式 del ,remove【删除指定元素,如果有多个,取列表的第一个匹配项】,pop【如果不输入下标,默认删除最后一个】)

 >>> del zoo[1]
>>> zoo
['panda', 'chimpanzee', 'zebra', '从lion前插入', 'lion', 'cat', 'newone', '追加']
>>> zoo.remove("从lion前插入")
>>> zoo
['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', '追加']
>>> zoo.pop() #删除列表最后一个值
'追加'
>>> zoo
['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone']
>>>

#pop虽然是删除,不过会获取每一个被删除的元素,list2.append(list.pop()) ,从而达到list删除,list2增加的目的

扩展:

 >>> zoo
['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone']
>>> b=[1,2,3]
>>> zoo.extend(b)
>>> zoo
['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', 1, 2, 3]
>>>

统计:

 >>> zoo
['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', 1, 2, 3]
>>> zoo.count("newone") #统计列表中有多少个【newone】
1
>>>

排序和反转: 其中排序是按照ASCII码顺序进行排序

 >>> zoo.sort()
Traceback (most recent call last): #python3中 int和str不能排序
File "<pyshell#45>", line 1, in <module>
zoo.sort()
TypeError: '<' not supported between instances of 'int' and 'str'
>>> zoo[-1]="" #修改
>>> zoo[-2]=""
>>> zoo[-3]=""
>>> zoo
['cat', 'chimpanzee', 'lion', 'newone', 'panda', 'zebra', '', '', '']
>>> zoo.sort() #排序
>>> zoo
['', '', '', 'cat', 'chimpanzee', 'lion', 'newone', 'panda', 'zebra']
>>> zoo.reverse() #反转
>>> zoo
['zebra', 'panda', 'newone', 'lion', 'chimpanzee', 'cat', '', '', '']
>>>
"""
有一个列表[11, 2, 3, 3, 7, 9, 11, 2, 3],去重并且保持原来的顺序.
"""
l1 = [11, 2, 3, 3, 7, 9, 11, 2, 3]
ret = list(set(l1))
print(ret)
ret.sort(key=l1.index) # 按值在l1中的索引进行排序
print(ret) l2 = [
{"name": "alex", "age": 36},
{"name": "GoldBoss", "age": 30},
{"name": "xiaoyima", "age": 18}
]
# 课后作业
l2.sort(key=lambda x: x["age"])
print(l2)

sort(key=lst.index)

获取下标:

 >>> zoo
['zebra', 'panda', 'newone', 'lion', 'chimpanzee', 'cat', '', '', '']
>>> zoo.index("panda")
1
>>>

清空:

zoo.clear()  #清空列表

复制:浅copy

 >>> zoo2222 = zoo.copy() #复制
>>> zoo2222
['zebra', 'panda', 'newone', 'lion', 'chimpanzee', 'cat']
>>> zoo[0]="dog"
>>> zoo
['dog', 'panda', 'newone', 'lion', 'chimpanzee', 'cat']
>>> zoo2222
['zebra', 'panda', 'newone', 'lion', 'chimpanzee', 'cat']
>>> 此时修改了zoo的一个元素,zoo2222不会一起改
但这只是浅copy,只复制了第一层 当zoo的元素中包含了列表,修改改聊表中的值,zoo2也会一起修改
>>> zoo
['dog', 'panda', 'newone', 'lion', 'chimpanzee', 'cat', ['peter', 'tony']]
>>> zoo2 = zoo.copy()
>>> zoo2
['dog', 'panda', 'newone', 'lion', 'chimpanzee', 'cat', ['peter', 'tony']]
>>> zoo[6][0]="PETER"
>>> zoo2
['dog', 'panda', 'newone', 'lion', 'chimpanzee', 'cat', ['PETER', 'tony']]
>>> 另外:
list = list2
此时与 str = str2 不同,
此时的list相当于只向list2的内存地址,list2修改,list也会跟着一起修改

若要进行深copy:copy模块中copy还是浅copy,deep copy才是深copy

 1 import copy
2 zoo3 = copy.deepcopy(zoo)
3 #此时修改zoo,不管zoo中是否包含列表,zoo3都不会影响。

小结,列表用到的函数有:append,insert,extend,pop,remove,clear,index,count,reverse,sort,copy

元组(tuple)

只可查列表,只能查

可用函数只有 count,index

http://www.runoob.com/python3/python3-tuple.html

>>> a = (1,2,3)
>>> b = (5,6,7)
>>> a+b
(1, 2, 3, 5, 6, 7)
>>> c = (5,6,8)
>>> b+c
(5, 6, 7, 5, 6, 8)
>>>

Python—列表操作的更多相关文章

  1. Python列表操作大全(非常全)

    Python列表操作大全(非常全!!!) 对于python列表的理解可以和C语言里面的数组进行比较性的记忆与对照,它们比较相似,对于python里面列表的定义可以直接用方括号里加所包含对象的方法,并且 ...

  2. python第七篇:Python 列表操作详解

    Python列表操作详解 list函数 list()   #生成一个空的列表 list(iterable)  #用可迭代对象初始化一个列表 列表的 and 运算和 or 运算 列表and运算 > ...

  3. python列表操作大全

    Python列表操作大全 对于python列表的理解可以和C语言里面的数组进行比较性的记忆与对照,它们比较相似,对于python里面列表的定义可以直接用方括号里加所包含对象的方法,并且python的列 ...

  4. Python列表操作集合

    对于python列表里元素的操作主要分为以下几个方面: 1.向列表里面加元素: 向python列表里面添加元素主要有三种方法: (1)append() append()对于列表的操作主要实现的是在特定 ...

  5. python列表操作总结

    list是python中非常重要的类型/数据结构,总结如下: 符号说明 l:列表 l2:新列表 e:元素 index:位置 方法: 原地修改: l.append(e) l.insert(index, ...

  6. Python列表操作常用API

    1.列表的概念 (1)列表的定义 列表是Python中一种基本的数据结构.列表存储的数据,我们称为元素.在列表中的每个元素都会有一个下标来与之对应,第一个索引是0,第二个索引是1,依此类推的整数. 列 ...

  7. Python列表操作与深浅拷贝(6)——列表索引、查询、修改、扩展

    列表list定义 L1 = [] L2 = [1,2,'abc'] L3 = list() L4 = list(range(5)) L5 = [1,'abc',True,None,[4,5,'abc' ...

  8. Python列表操作与深浅拷贝(5)——数字处理函数、类型判断、列表链表队列栈

    python内建数据结构 分类 数值型: int float complex bool 序列对象: 字符串str 列表list 元组tuple 键值对: 集合set 字典dict 数值型 (list ...

  9. python——列表操作函数和方法

    1.添加新元素 1.1 append()函数 描述:append() 方法用于在列表末尾添加新的对象. 语法:list.append(obj) 参数:obj -- 添加到列表末尾的对象. 返回值:该方 ...

随机推荐

  1. break,continue的区别

    break 终止循环, continue 跳出本次循环,进入下一次循环 username = 'Loker'passwd = '123456' for i in range(3): user = in ...

  2. fiddler学习总结--通过Fiddler模拟弱网进行测试

    弱网测试的目的: 弱网测试可以发现一些因为网络问题导致的交互问题,从而更好的完善应用的性能. 关注点:1.卡死,崩溃,无响应,闪退.2.业务交互数据传输正确性. 通过Fiddler可以模拟弱网进行测试 ...

  3. caffe-ssd安装GPU版本和CPU的区别

    在CPU中1.CPU_ONLY :=1的注释取消掉 2.BLAS := atlas 在GPU中 1.USE_CUDNN := 1的注释取消 2.BLAS := open

  4. HDU 1114

    在 ACM 能够开展之前,必须准备预算,并获得必要的财力支持.该活动的主要收入来自于 Irreversibly Bound Money (IBM).思路很简单.任何时候,某位 ACM 会员有少量的钱时 ...

  5. Java IO--BIO

    一.java io 概述 1.1 相关概念 Java IO Java IO即Java 输入输出系统.不管我们编写何种应用,都难免和各种输入输出相关的媒介打交道,其实和媒介进行IO的过程是十分复杂的,这 ...

  6. 第三方jar上传至公司maven仓库(私库)解决办法

    在实际开发过程中,我们经常会遇到需要引用的jar依赖,在我们公司的maven仓库不存在,这个时候我们就需要把jar上传上去,在项目中添加对应依赖就OK了. 步骤1:下载jar 在http://mvnr ...

  7. Python工资高还是Java?

    说起来,随着人工智能和大数据逐渐进入人们的眼中,越来越多的人看到互联网未来大好发展趋势,而想要学习一门技术来进入其中,以期分一杯羹.但是,作为人工智能和大数据的重要编程语言,Python和Java,该 ...

  8. P1636 Einstein学画画

    一笔画问题 P1636 Einstein学画画 如果一个图存在一笔画,则一笔画的路径叫做欧拉路,如果最后又回到起点,那这个路径叫做欧拉回路. 奇点:跟这个点相邻的边数目有奇数个的点 不存在奇数个奇点的 ...

  9. Python 协程了解

    协程: 1.协程,又称微线程,纤程.英文名Coroutine. 2.协程是跑在线程内的单线程,串行没有锁. 3.协程是一种用户态的轻量级线程. 4.协程CPU是访问不到的,协程是用户自己控制的.   ...

  10. 清华集训2017 Day 2简要题解

    *注意:这套题目题面请在loj / uoj查看 从这里开始 题目列表(loj) Problem A 小 Y 和地铁 Problem B 小 Y 和二叉树 Problem C 小 Y 和恐怖的奴隶主 训 ...