zoukankan      html  css  js  c++  java
  • python3学习笔记13(数据结构)

    参考http://www.runoob.com/python3/python3-data-structure.html

    列表

    列表是可修改的。

    列表方法让列表可以方便的作为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。

    其中用append()方法可以把一个元素添加的堆栈顶;可以用不指定索引的pop()方法把一个元素从堆栈顶释放出来,返回最后一个元素。

    列表页可以用作队列,只是队列里是第一加入的元素,第一个取出来;拿列表做队列效率不高。在列表的最后添加或弹出元素速度快,然而在列表里插入或头部弹出速度不快(因为所有其他的元素都得一个一个移动)例如popleft()方法。

    列表推导式

    列表推导式提供了从序列创建列表的简单途径。应用程序将一些操作应用于某个序列的每个元素,最后用获得的结果作为生成新列表的元素,或者根据确定的判定条件创建子序列。

    vec = [2,4,6]
    vec1 = [3*x for x in vec]
    #每个列表推导式在for之后跟一个表达式,如果希望推导出一个元组,必须用括号
    print(vec1)
    vec2 = [[x,x**2] for x in vec]
    print(vec2)
    vec3 = [3*x for x in vec if x >3] #if语句过滤
    print(vec3)
    vec4 = [3*x for x in vec if x <2]
    print(vec4)
    vec5 = [1,2,3]
    vec6 = [x*y for x in vec for y in vec5 ]
    print(vec6)
    vec7 = [x+y for x in vec for y in vec5]
    print(vec7)
    vec8 = [vec[i]*vec5[i]for i in range(len(vec))]
    print(vec8)

    嵌套列表解析

    Python的列表还可以嵌套。

    #3x4矩阵列表
    matrix = [
    [1,2,3,4],
    [5,6,7,8],
    [9,10,11,12],
    ]
    cr = [[row[i] for row in matrix] for i in range(4)]
    #3x4矩阵列表转换为4x3列表
    print(cr)

    #方法二
    transposed = []
    for i in range(4):
    transposed.append([row[i] for row in matrix])
    print(transposed)

    del 语句

    使用 del 语句可以从一个列表中依索引而不是值来删除一个元素。可以用del语句从列表中删除一个切割,或清空整个列表。

    a = [-1,1,2,3,345,345,111.5]
    del a[0]
    print(a)
    del a[2:4]
    print(a)
    del a[:]
    print(a)
    del a #也可以删除实体变量
    print(a)

    元组和序列

    t = 12345,54321,'hello!'   #元组由若干逗号分隔的值组成
    t[0]
    print(t[0])
    print(t)
    u = t,(1,2,3,4,5) #元组在输出时总是有括号的,以便于正确表达嵌套结构。
    print(u)

    集合

    集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。

    可以用大括号({})创建集合。注意:如果要创建一个空集合,你必须用 set() 而不是 {} ;后者创建一个空的字典,下一节我们会介绍这个数据结构。

    basket = {'apple','orange','apple','pear','orange','banana'}
    print(basket) #删除重复的
    x1 = 'orange' in basket #检测成员是否存在集合中
    print(x1)
    x2 = 'crabgrass' in basket
    print(x2)

    x3 = set('abcdacbabc')
    x4 = set('alacazz')
    print(x3)
    print(x3-x4) #在a中有,b中没有
    print(x3|x4) #在a或b有
    print(x3&x4) #在a和b中同时有
    print(x3^x4) #在a或b中的字母,但是不同时在a和b
    x5 = {x for x in 'abracadabra' if x not in 'abc'} #集合也支持推导式
    print(x5)

    字典

    序列是以连续的整数为索引,与此不同的是,字典以关键字为索引,关键字可以是任意不可变类型,通常是字符串或数值。

    在同一个字典中,关键字必须是互不相同。

    创建空的字典:{}

    d = {'a':5601,'b':4000}
    d['c'] = 4127
    print(d)
    print(d['a'])
    del d['b']
    print(d)
    d['d'] = 4127
    print(d)
    print(list(d.keys()))
    print(sorted(d.keys()))
    print('d' in d)
    print('e' in d)
    print('d' not in d)
    #构造函数dict()直接从键值对元组列表中构建字典
    d1 = dict([('a',5601),('b',4000),('c',4127)])
    print(d1)
    #字典推导可以用来创建任意键和值的表达式词典
    d2 = {x: x**2 for x in (2,4,6)}
    print(d2)
    #如果关键字只是简单的字符串,使用关键字参数指定键值对
    d3 = dict(a= 5601,b= 4000,c= 4127)
    print(d3)


    若长生难求以命为注 方冥冥如悟因果殊途 --《长生》
  • 相关阅读:
    采购到入库所经历的表
    PO 收料SQL
    关于PO 和PR 的联系问题
    在Oracle Form中,如何实现自动编号(行号)的功能
    订单暂挂问题sql解决:
    类和结构的区别?
    DataTable.Select 方法 (String, String, DataViewRowState)
    Ref与Out的区别
    C# 反射
    委托
  • 原文地址:https://www.cnblogs.com/hc1hr2/p/10239684.html
Copyright © 2011-2022 走看看