Python入门指南2,数据结构
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python入门指南2,数据结构相关的知识,希望对你有一定的参考价值。
前言:什么是链表(linked list) ?
链表是指一组数据项的集合,其中 每个数据项都是一个节点的一部分,每个节点还包含指向下一个节点的链接
数据结构如下图所示:
一、Python中链表使用方法
创建链表:a=[12,3,5,86,20,3]
b=[5,2,80]
1. count(x) 返回x在链表中出现的次数
print(a.count(3),a.count(12),a.count(2))
运行结果:
2. index(x) 返回链表中第一个值为x的元素索引,没有时返回一个错误
print(a.index(3))
print(a.index(2))
运行结果:
3. sort() 对链表中的元素进行排序
a.sort()
print(a)
运行结果:
4. reverse() 对链表中的元素进行倒序,注意是倒序,不是倒排序,若想倒排序,需要先使用sort()进行排序
a.reverse()
print(a)
运行结果:
5. append(x) 将x添加到链表的末尾
a.append(333)
print(a)
运行结果:
6. extend(L) 在链表后添加链表L中的全部元素
a.extend(b)
print(a)
运行结果:
7. insert(i,x) 在链表i处添加元素x
a.insert(2,100)
print(a)
运行结果:
8. remove(x) 删除链表中第一个值为x的元素 ,如果没有,返回错误
a.remove(3)
print(a)
运行结果:
9. pop([i]) 从i处删除元素,并将其返回,如果没有指定i,则返回最后一个元素
print(a.pop(2))
运行结果:
10. del()可以删除指定元素,也可以切割部分或整个链表
del a[0]
print(a)
运行结果:
del a[2:4]
print(a)
运行结果:
11. 小结
由于以上的方法,
将链表当做堆栈(后进先出)或队列(先进先出)使用,append()和pop()结合使用
二、函数化编程工具 filter(),map(),reduce()
1. filter(function,sequence) 返回一个序列,包含了给定序列中调用function后返回值为true的元素
def f(x):
return x%2 !=0 and x%3!=0
print(filter(f,range(2,25)))
运行结果:
Python3.0以后 需要将filter对象转化成list
print(list(filter(f,range(2,25))))
运行结果:
2. map(function,sequence)为sequence 中的每个元素调用function,将返回值组成一个链表返回
def cube(x):
return x*x*x
print(list(map(cube,range(1,10))))
运行结果:
3. reduce(function,sequence)返回一个单值,先以前两个元素调用函数,再将结果和第三个元素,依次执行
如果序列中只有一个元素,就返回它,如果为空,抛出异常
Python3将reduce()从全局名字空间移除了,要想使用需要先引用
from functools import reduce
def add(x,y):
return x+y
print(reduce(add,range(1,10)))
运行结果:
三、元组,集合与字典
1. 元组由数个逗号分隔的值组成,不可改变,也不可给某个元素赋值
yz=11,4,"hello"
print(yz[0])
print(yz)
u=yz,"aa"
print(u)
构造包含零个或一个元素的元组
empty=()
oneelement=(3,)
运行结果:
2. 集合set(),是一个无序不重复元素的集,支持交,并,差
a=[1,2,3,4,3,2,5]
b=[1,2,3]
print(set(a))
print(set(a)-set(b))
print(set(a)|set(b))
print(set(a)&set(b))
print(set(a)^set(b))
运行结果:
3. dictionary 字典:值对集合 其关键字可以是任意不可变类型
a={"name":"qu","sex":"女","age":18}
keys()返回所有关键字组成的链表
print(a.keys())
print("name" in a)
for k,v in a.items():
print(k,v)
运行结果:
四、不同序列类型的比较
1.序列对象可以与相同类型的其他对象比较,比较操作按照字典序进行,先比较前两个与阿奴,如果相同。再比较后两个
2.不同类型的对象比较也是合法的,但输出结果是确定的,类型按照其名字排序,所以链表(list)<字符串(string)<元组(tupke)
以上是关于Python入门指南2,数据结构的主要内容,如果未能解决你的问题,请参考以下文章
markdown 打字稿...编码说明,提示,作弊,指南,代码片段和教程文章