1、列表
列表是一种用于保存有序元素集合的数据结构,即你可以在列表中存储元素序列。考虑一个购物清单,上面有你需要购买的物品列表,只不过你可能希望以分号分隔他们而到Python变成了逗号。
列表元素被包含在方括号中,这样Python就会才会明白你指定的是一个列表。一点列表创建完毕,我们可以对其元素进行添加,删除和搜索。正是因为可以执行添加和删除操作,我们将列表称作可变类型,即这种类型可以被修改。
对象和类的快速简介
列表是使用对象和类的一个例子。当我们对变量i赋值时,例如赋值5,这相当于创建一个Int类(类型)的对象(实例),你可以参看help(int)来更好的理解它。
一个类同样可以拥有方法,即函数,而他们只能应用与这个类。并且只有当你拥有一个类的对象时才能使用这些功能。例如,Python为列表提供了一个append方法允许我们将元素添加到列表的表尾。如,mylist.append(‘an item’)将字符串添加到列表mylist的尾部。注意,要用点号访问对象方法。
一个类还可以拥有字段,而字段只不过是专门应用与一个类的变量而已。当你拥有对应类的对象时就能使用这些变量了。字段同样利用点号访问,如,mylist.field。
1、list:列表(即动态数组,C++标准库的vector,但可含不同类型的元素于一个list中)
a = ["I","you","he","she"] #元素可为任何类型。
下标:按下标读写,就当作数组处理
以0开始,有负下标的使用
0第一个元素,-1最后一个元素,
-len第一个元素,len-1最后一个元素
取list的元素数量
len(list) #list的长度。实际该方法是调用了此对象的__len__(self)方法。
创建连续的list
L = range(1,5) #即 L=[1,2,3,4],不含最后一个元素
L = range(1, 10, 2) #即 L=[1, 3, 5, 7, 9]
list的方法
L.append(var) #追加元素
L.insert(index,var)
L.pop(var) #返回最后一个元素,并从list中删除之
L.remove(var) #删除第一次出现的该元素
L.count(var) #该元素在列表中出现的个数
L.index(var) #该元素的位置,无则抛异常
L.extend(list) #追加list,即合并list到L上
L.sort() #排序
L.reverse() #倒序
list 操作符:,+,*,关键字del
a[1:] #片段操作符,用于子list的提取
[1,2]+[3,4] #为[1,2,3,4]。同extend()
[2]*4 #为[2,2,2,2]
del L[1] #删除指定下标的元素
del L[1:3] #删除指定下标范围的元素
list的复制
L1 = L #L1为L的别名,用C来说就是指针地址相同,对L1操作即对L操作。函数参数就是这样传递的
L1 = L[:] #L1为L的克隆,即另一个拷贝。
list comprehension
[ <expr1> for k in L if <expr2> ]
定义list
li=["a","b","mpilgrim","z","example"]
向list中增加元素
li.append("new")
li.insert(2,"new")
li.extend(["two","elements"])
extend(扩展) 与append(追加) 的差别
Lists 的两个方法 extend 和 append 看起来类似,但实际上完全不同。extend 接受一个参数,这个参数总是一个 list,并且把这个 list 中的每个元素添加到原 list 中。
在这里 list 中有 3 个元素 ('a'、'b' 和 'c'),并且使用另一个有 3 个元素 ('d'、'e' 和 'f') 的 list 扩展之,因此新的 list 中有 6 个元素。
另一方面,append 接受一个参数,这个参数可以是任何数据类型,并且简单地追加到 list 的尾部。在这里使用一个含有 3 个元素的 list 参数调用 append 方法。
原来包含 3 个元素的 list 现在包含 4 个元素。为什么是 4 个元素呢?因为刚刚追加的最后一个元素本身是个 list。List 可以包含任何类型的数据,也包括其他的 list。这或许是您所要的结果,或许不是。如果您的意图是 extend,请不要使用append。
List 运算符
Lists 也可以用 + 运算符连接起来。list = list + otherlist 相当于 list.extend(otherlist)。但 + 运算符把一个新 (连接后) 的 list 作为值返回,而 extend 只修改存在的 list。也就是说,对于大型 list 来说,extend 的执行速度要快一些。
Python 支持 += 运算符。li += ['two'] 等同于 li.extend(['two'])。+= 运算符可用于 list、字符串和整数,并且它也可以被重载用于用户自定义的类中 (更多关于类的内容参见 第 5 章)。
* 运算符可以作为一个重复器作用于 list。li = [1, 2] * 3 等同于 li = [1, 2] + [1, 2] + [1, 2],即将三个 list 连接成一个。
list 的分片 (slice)
您可以通过指定 2 个索引得到 list的子集,叫做一个 “slice” 。返回值是一个新的 list,它包含了 list 中按顺序从第一个 slice 索引 (这里为 li[1]) 开始,直到但是不包括第二个 slice 索引 (这里为 li[3]) 的所有元素。
如果一个或两个 slice 索引是负数,slice 也可以工作。如果对您有帮助,您可以这样理解:从左向右阅读 list,第一个 slice 索引指定了您想要的第一个元素,第二个 slice 索引指定了第一个您不想要的元素。返回的值为在其间的每个元素。
List 从 0 开始,所以 li[0:3] 返回 list 的前 3 个元素,从 li[0] 开始,直到但不包括 li[3]。
Slice 简写
如果左侧分片索引为 0,您可以将其省略,默认为 0。所以 li[:3] 同 “list 的分片 (slice)” 的 li[0:3] 是一样的。
同样的,如果右侧分片索引是 list 的长度,可以将其省略。所以 li[3:] 同 li[3:5] 是一样的,因为这个 list 有 5 个元素。
请注意这里的对称性。在这个包含 5 个元素的 list 中,li[:3] 返回前 3 个元素,而 li[3:] 返回后 2 个元素。实际上,li[:n] 总是返回前 n 个元素,而 li[n:] 将返回剩下的元素,不管 list 有多长。
如果将两个分片索引全部省略,这将包括 list 的所有元素。但是与原始的名为 li 的 list 不同,它是一个新 list,恰好拥有与 li 一样的全部元素。li[:] 是生成一个 list 完全拷贝的一个简写。
检索列表的值,四种方式:in、not in、count、index,后两种方式是列表的方法。
示例列表:a_list = ['a','b','c','hello']:
判断值是否在列表中,in操作符:
'a' in a_list<wbr>//判断值a是否在列表中,并返回True或False</wbr>
判断值是否不在列表,not in操作符:
'a' not in a_list<wbr><wbr>//判断a是否不在列表中,并返回True或False</wbr></wbr>
统计指定值在列表中出现的次数,count方法:
a_list.count('a')<wbr>//返回a在列表中的出现的次数</wbr>
查看指定值在列表中的位置,index方法:
a_list.index('a')<wbr><wbr>//返回a在列表中每一次出现的位置,默认搜索整个列表<br>
a_list.index('a',0,3)<wbr>//返回a在指定切片内第一次出现的位置</wbr></wbr></wbr>
使用join链接list成为字符串
params={"server":"mpilgrim","database":"master","uid":"sa","pwd":"secret"}
";".join(["%s=%s"%(k,v)fork,vinparams.items()])
输出'pwd=secret;database=master;uid=sa;server=mpilgrim
join只能用于元素是字符串的list;它不进行任何的类型强制转换。连接一个存在一个或多个非字符串元素的list将引发一个异常。
利用list 传参数
def a(b,c):
print b,c
a(1,2)
a(*[1,2])
a(**{'b':1,'c':2}) #字典
list的映射解析
li=[1,9,8,4]
li=[elem*2foreleminli]
列表过滤
li = ["a", "mpilgrim", "foo", "b", "c", "b", "d", "d"]
print [elem for elem in li if len(elem) > 1]
print [elem for elem in li if elem != "b"]
print [elem for elem in li if li.count(elem) == 1]
练习题
1.删除list里面的重复元素,并对其排序,然后对里面元素乘以2 并去掉大于10的元素
输入input1=[1,3,5,1,7] input2=[2,3,8] input3=[3,4]
要求输出 b=[2,4,6,8,10] ,其过程要求用函数实现 参考上一章可变参数可变(VarArgs)参数
举例 一下是一个简单的求和
sum=0
a=[1,2,3,4]
def uniq(*Nums):
global sum
for num in Nums:
sum=num+sum
uniq(*a)
print sum
提示过程,传入元素为list的list 然后遍历list 进行合并......
分享到:
相关推荐
赵璐python教程答案_Python学习习题笔记---基础篇 基本数据类型: 1:info = 'abc' info[2] = 'd' 结果是什么,为什么会报错呢? 答: TypeError: 'str' object does not support item assignment 字符串是不可变数据...
python学习笔记1——(廖雪峰教程,菜鸟教程)python基础 python学习笔记1——(廖雪峰教程,菜鸟教程) >>> classmates = ['Michael', 'Bob', 'Tracy'] >>> len(classmates) 3 ⽤索引来访问list中每⼀个位置的元素...
以下是一个Python学习笔记的大纲,涵盖了从基础到进阶的内容。你可以根据自己的学习进度和理解情况,逐步填充和完善这个大纲。 Python学习笔记大纲 一、Python基础 Python简介 Python的历史 Python的特点和应用...
立即学习:https://edu.csdn.net/course/play/24797/282168?utm_source=blogtoedu 除去列表里重复元素: 新列表搜集法(可以保证元素顺序) 创建新列表 遍历源列表的所有元素,若该元素不在新列表中,将元素添加到新...
Python笔记学习笔记 :memo: 介绍 有时候想找一个东西(写法),但当下却忘记关键字,所以整理一篇学习笔记,要找资料的时候也比较方便。 有些是网路上找的范例,然后自己再修修改改,或者去参考一些Python-Patterns...
Python学习过程中,遇到的python难点、重点问题的学习笔记,以及一些有助于理解的好的内容。包括:list、tupe、dict、set区别、特点,用法;高级特性,包括切片、列表生成式,生成器、迭代器,函数式编程,包括高级...
本思维导图是学习csdn学院的一个python视频教程(https://edu.csdn.net/course/play/29410/417581)时做的list列表的笔记,发出来希望可以抛砖引玉!
在 Python 编程中,我们既需要独立的变量来保存一份数据,也需要序列来保存大量数据。 列表(list)和元组(tuple)比较相似,...本资源是我在学习Python时,记录的列表、元祖、字典、集合学习笔记,供大家参考学习。
其他python学习笔记集合: Python基础知识详解 从入门到精通 全集索引篇 Python基础知识详解(十)小结,用python实现教师信息管理系统 上篇用python实现教师信息管理系统,这里学几个实现这个系统过程中遇到的问题 ...
False, 0, None, 空字符串、空列表(list)、空元组(tuple)、空字典(dict)、空集合(set) 其他对象的布尔值为True 13.分支结构:单分支结构 #以银行取款为例 如: money=1000 s=int(input(‘请输入取款金额:...
文章目录高级特性切片exercise迭代定义迭代dict对象:迭代字符串对象判断是否为可迭代对象对list类实现下标循环exercise小结列表生成式生成list列出当前目录下所有文件和目录名使用两个变量生成list列表生成式中if…...
python数据类型汇总一.数值型Number1.int2.float3.complex4.数据类型转换二.字符串str对字符串进行操作,字符串的方法。1. 字符串切片2. 字符串统计3. 判断4. 拼接5. 对字符串操作后输出6. 转换7. 索引三.列表list对...
本文实例讲述了Python学习笔记基本数据结构之序列类型list tuple range用法。分享给大家供大家参考,具体如下: list 和 tuple list:列表,由 [] 标识; 有序;可改变列表元素 tuple:元组,由 () 标识; 有序;...
Python学习之路,点击有全套Python笔记 Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。 语法: for 临时变量 in 序列: 重复执⾏的代码1 重复执⾏的代码2 基础版 name_list = ['jack', 'tom',...
set集合判断集合中是否有⽆元素_Python⼊门教程笔记(五) 集合(set)及函数 三九、什么是 三九、什么是set 在前⾯,我们学习了dict,知道dict的key是不重复的,当我们往dict⾥添加⼀个相同key的value时,新的value...
系统模块 输入输出: print(),input() 数据类型: str(),int(),float(),list(),set(),dict(),tuple() 求和排序: max(),min(),sum(),sorted() 获取长度: len() 类型判断: id(),type(),isinstance():...
笔记(13)中介绍了在策略中对单个参数进行优化的实现方法,本文将介绍对策略中的多个参数进行优化的方案。 以笔记(14)中介绍的均线交叉策略为例,实现不同长期、短期均线参数组合的优化测试,回测股票为000001...
欢迎来到何彦南的資料結構與演算法(2019-三下)学习笔记 Contents >>重要!! 不可不知道的事 这些专有名词很重要,在学习这堂课前可以先去查查看,还有提醒一下,请不要只查中文,英文的资源更丰富。下面我租略介绍...
现在读到了列表(list)、元组(tuple)、集合(set)和字典(dict)四种在python内置的重要的数据结构。我只是想记录一下列表(list)和元组(tuple)比较容易搞混的地方和阐述一遍列表(list)和元组(tuple)比较常用的一些方法。...