码迷,mamicode.com
首页 > 编程语言 > 详细

Python入门指南2,数据结构

时间:2017-10-13 18:02:24      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:count   有关   删除   支持   func   sequence   print   赋值   ack   

前言:什么是链表(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,数据结构

标签:count   有关   删除   支持   func   sequence   print   赋值   ack   

原文地址:http://www.cnblogs.com/quxikun/p/7645793.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!