`
lovnet
  • 浏览: 6689990 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

python 系统学习笔记(四)--list

 
阅读更多

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>

在 list 中搜索

查看指定值在列表中的位置,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学习习题笔记-基础篇.pdf

    赵璐python教程答案_Python学习习题笔记---基础篇 基本数据类型: 1:info = 'abc' info[2] = 'd' 结果是什么,为什么会报错呢? 答: TypeError: 'str' object does not support item assignment 字符串是不可变数据...

    python学习笔记1-(廖雪峰教程,菜鸟教程)python基础.pdf

    python学习笔记1——(廖雪峰教程,菜鸟教程)python基础 python学习笔记1——(廖雪峰教程,菜鸟教程) &gt;&gt;&gt; classmates = ['Michael', 'Bob', 'Tracy'] &gt;&gt;&gt; len(classmates) 3 ⽤索引来访问list中每⼀个位置的元素...

    python学习笔记-王纯业

    以下是一个Python学习笔记的大纲,涵盖了从基础到进阶的内容。你可以根据自己的学习进度和理解情况,逐步填充和完善这个大纲。 Python学习笔记大纲 一、Python基础 Python简介 Python的历史 Python的特点和应用...

    python学习笔记(08)-案例实操:列表去重

    立即学习:https://edu.csdn.net/course/play/24797/282168?utm_source=blogtoedu 除去列表里重复元素: 新列表搜集法(可以保证元素顺序) 创建新列表 遍历源列表的所有元素,若该元素不在新列表中,将元素添加到新...

    python-notes:Python学习笔记:memo:

    Python笔记学习笔记 :memo: 介绍 有时候想找一个东西(写法),但当下却忘记关键字,所以整理一篇学习笔记,要找资料的时候也比较方便。 有些是网路上找的范例,然后自己再修修改改,或者去参考一些Python-Patterns...

    Python 难点重点学习笔记

    Python学习过程中,遇到的python难点、重点问题的学习笔记,以及一些有助于理解的好的内容。包括:list、tupe、dict、set区别、特点,用法;高级特性,包括切片、列表生成式,生成器、迭代器,函数式编程,包括高级...

    python-list.pdf

    本思维导图是学习csdn学院的一个python视频教程(https://edu.csdn.net/course/play/29410/417581)时做的list列表的笔记,发出来希望可以抛砖引玉!

    Python列表、元祖、字典、集合学习笔记文档(附Python源码)

    在 Python 编程中,我们既需要独立的变量来保存一份数据,也需要序列来保存大量数据。 列表(list)和元组(tuple)比较相似,...本资源是我在学习Python时,记录的列表、元祖、字典、集合学习笔记,供大家参考学习。

    Python问题解决,重复向列表中添加字典作为元素

    其他python学习笔记集合: Python基础知识详解 从入门到精通 全集索引篇 Python基础知识详解(十)小结,用python实现教师信息管理系统 上篇用python实现教师信息管理系统,这里学几个实现这个系统过程中遇到的问题 ...

    辛辛苦苦手打的Python学习笔记,适合想自学Python的同学

    False, 0, None, 空字符串、空列表(list)、空元组(tuple)、空字典(dict)、空集合(set) 其他对象的布尔值为True 13.分支结构:单分支结构 #以银行取款为例 如: money=1000 s=int(input(‘请输入取款金额:...

    python学习笔记-高级特性 20200309

    文章目录高级特性切片exercise迭代定义迭代dict对象:迭代字符串对象判断是否为可迭代对象对list类实现下标循环exercise小结列表生成式生成list列出当前目录下所有文件和目录名使用两个变量生成list列表生成式中if…...

    python3学习笔记–python中的数据类型汇总。

    python数据类型汇总一.数值型Number1.int2.float3.complex4.数据类型转换二.字符串str对字符串进行操作,字符串的方法。1. 字符串切片2. 字符串统计3. 判断4. 拼接5. 对字符串操作后输出6. 转换7. 索引三.列表list对...

    Python学习笔记基本数据结构之序列类型list tuple range用法分析

    本文实例讲述了Python学习笔记基本数据结构之序列类型list tuple range用法。分享给大家供大家参考,具体如下: list 和 tuple list:列表,由 [] 标识; 有序;可改变列表元素 tuple:元组,由 () 标识; 有序;...

    Python-遍历列表-for循环

    Python学习之路,点击有全套Python笔记 Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。 语法: for 临时变量 in 序列: 重复执⾏的代码1 重复执⾏的代码2 基础版 name_list = ['jack', 'tom',...

    set集合判断集合中是否有无元素-Python入门教程笔记(五)集合(set)及函数.pdf

    set集合判断集合中是否有⽆元素_Python⼊门教程笔记(五) 集合(set)及函数 三九、什么是 三九、什么是set 在前⾯,我们学习了dict,知道dict的key是不重复的,当我们往dict⾥添加⼀个相同key的value时,新的value...

    Python学习笔记-模块中的方法(系统模块,OS)

    系统模块 输入输出: print(),input() 数据类型: str(),int(),float(),list(),set(),dict(),tuple() 求和排序: max(),min(),sum(),sorted() 获取长度: len() 类型判断: id(),type(),isinstance():...

    Python量化交易学习笔记(24)——策略多参数优化

    笔记(13)中介绍了在策略中对单个参数进行优化的实现方法,本文将介绍对策略中的多个参数进行优化的方案。 以笔记(14)中介绍的均线交叉策略为例,实现不同长期、短期均线参数组合的优化测试,回测股票为000001...

    leetcode1python-Class_DSA-2019:algorithms&data-structuresLearningNote|这

    欢迎来到何彦南的資料結構與演算法(2019-三下)学习笔记 Contents &gt;&gt;重要!! 不可不知道的事 这些专有名词很重要,在学习这堂课前可以先去查查看,还有提醒一下,请不要只查中文,英文的资源更丰富。下面我租略介绍...

    python学习笔记之列表(list)与元组(tuple)详解

    现在读到了列表(list)、元组(tuple)、集合(set)和字典(dict)四种在python内置的重要的数据结构。我只是想记录一下列表(list)和元组(tuple)比较容易搞混的地方和阐述一遍列表(list)和元组(tuple)比较常用的一些方法。...

Global site tag (gtag.js) - Google Analytics