`
lovnet
  • 浏览: 6901002 次
  • 性别: 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学习笔记1-(廖雪峰教程,菜鸟教程)python基础.pdf

    以上就是Python学习笔记1中的主要内容,这些基础知识构成了Python编程的基础,是学习更高级特性和应用的基础。对于初学者来说,熟练掌握这些内容是非常重要的。在后续的学习中,还会涉及到函数、模块、面向对象编程...

    《强烈推荐》Python学习笔记--皮大庆

    在这一段文字中,我们看到了Python学习笔记的概览和一些关于Python语言的基本信息。首先,皮大庆作为作者,他的学习笔记是基于《How to think like a computer scientist》这本书编写的,非常适合初学者入门,也是...

    python学习笔记与简明教程

    ### Python学习笔记与简明教程知识点汇总 #### Python 第1课:安装 - **知识点**: - Python 安装包的选择与下载。 - 安装过程中注意事项,如添加环境变量等。 - 验证Python是否安装成功的方法。 #### Python ...

    Python3学习笔记整理

    【Python3学习笔记整理】 在Python3的学习过程中,掌握一系列核心概念和技能是至关重要的。这份笔记涵盖了Python的基础语法、数据结构、控制流、函数、模块化编程、面向对象编程等多个方面,旨在帮助初学者系统地...

    python基础学习笔记

    本文档是一份详尽的Python基础学习笔记,...整体而言,这份学习笔记为初学者提供了一个全面、系统的Python入门路径,包含了从基础语法到面向对象编程的完整知识框架,非常适合对Python感兴趣的初学者进行学习和实践。

    Python学习笔记-

    ### Python学习笔记知识点总结 #### 一、Python简介与特点 **Python**是一种新兴的、免费的、解释型的、可移植的、开放源代码的脚本编程语言。它不仅适用于快速开发简单脚本,也适合开发复杂的应用程序。Python...

    赵璐python教程答案-Python学习习题笔记-基础篇.pdf

    【Python基础知识】 1. 字符串操作:在Python中,字符串是不可变数据类型,意味着一旦创建就不能直接修改。尝试对字符串的某个位置赋值,如`info[2] = 'd'`会引发`...掌握这些基础将有助于进一步深入学习Python编程。

    python学习笔记-初识python

    【Python学习笔记-初识Python】 在编程世界中,Python是一种高级、通用的解释型编程语言,以其简洁、易读的语法和强大的功能而受到广大程序员的青睐。本笔记将带你初识Python的魅力,理解其核心概念,并为你提供...

    python学习笔记-王纯业

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

    python学习笔记3

    ### Python学习笔记3 #### 知识点概览 1. **Python的语法特性与C语言的区别** 2. **Python中的缩进规则及其重要性** 3. **Python列表的使用方法** 4. **如何在Python列表中添加和删除元素** 5. **Python列表索引从...

    最新Python学习笔记3

    通过本篇学习笔记,初学者可以系统地掌握Python中变量与函数的关系,以及如何在实际编程中使用各种高阶函数来处理数据和控制流程。这对于进一步深入学习Python语言及其在数据分析、网络编程、机器学习等领域的应用...

    python学习笔记.pdf

    在这份《python学习笔记.pdf》中,记录了Python编程的基础知识和一些技巧,内容涵盖了字符串处理、变量操作、数据结构、循环、条件判断等方面。以下是对学习笔记中提到知识点的详细说明。 ### 字符串处理 在Python...

    Python 学习笔记.pdf

    这份学习笔记涵盖了Python的基本概念、数据类型、控制结构、函数、模块与包、面向对象编程等重要内容。下面将对这些知识点进行详细的解读。 ### 1. Python简介 - **Python** 是一种高级编程语言,因其简洁易读的...

    Python学习笔记.pdf

    Python学习笔记 Python是一种高级的、解释型的编程语言,它支持对象oriented、命令式、函数式编程风格。下面是对Python语言的基本知识点的总结。 1. 基本数据类型 Python有多种基本数据类型,包括整数(integer)...

    王纯业版《Python学习笔记》.pdf

    这份学习笔记全面而深入地介绍了Python编程语言的核心概念和技术,适合初学者系统学习,同时也为有经验的开发者提供了参考和复习的资料。通过对这些知识点的学习,读者将能够掌握Python的基本编程能力和部分进阶技巧...

    B站黑马程序员Python教程学习笔记.zip

    Python是一种高级、通用的编程语言,以其简洁、易读的语法而闻名,被广泛应用于网络爬虫、数据分析、机器学习、人工智能等多个领域。在B站黑马程序员的Python教程中,你将深入理解Python的基础概念,包括: 1. **...

    python学习笔记用案例

    "Python学习笔记用案例"这个标题表明这是一份包含了实际应用示例的学习资料,旨在帮助初学者通过实例来理解和掌握Python编程。描述中的“欢迎下载”暗示这份资料是公开共享的,鼓励大家学习和交流。 在Python的学习...

    Python学习笔记.docx

    Python 基础知识点总结 Python 是一种高级的、解释型的编程语言,它支持多种编程范式,包括面向对象、命令式、函数式编程等。Python 的设计理念是以简洁、易读、易维护为目标,强调代码的可读性和简洁性。 一、if ...

Global site tag (gtag.js) - Google Analytics