• Python游戏开发:pygame游戏开发常用数据结构


    一、数组与列表

    数组可以理解为简化的列表。像我们之前使用的pygame.sprite.Group这样的精灵组,也是一个列表。列表的元素是可变的,它具有添加、删除、搜索、排序等多种方法。

    1、一维列表

    可以在创建列表的时候一次性的定义所有元素,也可以以后再向列表里面添加:

    name = ["zhangsan","lisi","wangwu"]
    print name
    ['zhangsan', 'lisi', 'wangwu']
    修改元素

    可以通过索引号来获取列表中的任何元素的数据,也可以通过引用索引编号来修改元素值(索引编号是从0开始的):

    name = ["zhangsan","lisi","wangwu"]
    print name

    print name[0]
    name[0] = "zhaoliu"

    print name
    ---------------------------------------------------
    ['zhangsan', 'lisi', 'wangwu']
    zhangsan
    ['zhaoliu', 'lisi', 'wangwu']
    添加元素:

    可以使用append方法把一个元素添加到列表中:

    name = ["zhangsan","lisi","wangwu"]
    print name

    name.append("zhaoliu")
    print name
    -----------------------------------------------------
    ['zhangsan', 'lisi', 'wangwu']
    ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
    也可以使用insert(index,value)方法把一个元素插入到列表的中间,index代表索引参数,value代表值。

    name = ["zhangsan","lisi","wangwu"]
    print name

    name.insert(0,"zhaoliu")
    print name
    name.insert(1,"liuqi")
    print name
    -------------------------------------------------
    ['zhangsan', 'lisi', 'wangwu']
    ['zhaoliu', 'zhangsan', 'lisi', 'wangwu']
    ['zhaoliu', 'liuqi', 'zhangsan', 'lisi', 'wangwu']
    对元素统计:

    如果一个列表中有重复的元素,可以使用count()对其计数,其实就是统计一个列表中某个元素出现的次数:

    num =[]

    num.append(10)
    num.append(10)
    num.append(90)
    num.append(79)
    num.append(10)

    print num.count(10)
    ---------------------------
    搜索元素:

    可以使用index()方法来搜索一个元素在列表中第一次出现的位置:

    num =[90,10,89,78,30,40,90,10]

    print (num.index(10))
    -----------------------------------------
    1
    删除元素:

    使用remove()方法可以删除列表中的一个元素。

    num =[90,10,89,78,30,40,90,10]

    print (num)
    num.remove(10)
    print (num)
    --------------------------------------------
    [90, 10, 89, 78, 30, 40, 90, 10]
    [90, 89, 78, 30, 40, 90, 10]
    列表元素反转:

    使用reverse()方法可以将整个列表翻转:

    num =[90,10,89,78,30,40,90,10]

    print (num)
    num.reverse()
    print (num)
    ------------------------------------------
    [90, 10, 89, 78, 30, 40, 90, 10]
    [10, 90, 40, 30, 78, 89, 10, 90]
    列表排序:

    可以使用sort方法对列表中元素进行排序(默认是升序排列):

    num =[9,11,35,2,49,12,8,5,99]

    print (num)
    num.sort()
    print (num)
    ---------------------------------------
    [9, 11, 35, 2, 49, 12, 8, 5, 99]
    [2, 5, 8, 9, 11, 12, 35, 49, 99]
    2.栈式列表

    栈使用后进先出的方法来管理元素。pop方法可以弹出栈顶的元素(列表中的最后一项),append用来将一个元素压入栈中:

    stack = []
    for i in range(10):
    stack.append(i)

    print (stack)
    stack.append(10)
    print (stack)
    j = stack.pop(http://www.my516.com)
    k = stack.pop()
    print (j,k)
    print (stack)
    ------------------------------------------
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    (10, 9)
    [0, 1, 2, 3, 4, 5, 6, 7, 8]
    3.队列式列表:

    队列使用的是先进先出的模式管理元素,python中有一个名为queue的模块实现了队列的功能,为了便于说明我们这里使用一个列表来代替队列:

    queue = []
    for i in range(10):
    queue.append(i)
    print (queue)
    queue.append(89)
    queue.append(70)
    print (queue)
    n = queue[0]
    queue.remove(n)
    print (queue)
    ----------------------------------
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 89, 70]
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 89, 70]
    二、元组

    元组是一种和列表类似的数据类型,但是元组的元素是只读的,不可更改的。一旦初始化了,里面的元素就不可以再进行更改了。元组的比列表的优点就是元组的速度更快。

    1.初始化一个元组

    创建一个元组的过程叫做打包:

    tup = (1,2,3,4,5)
    print tup
    ---------------------
    (1, 2, 3, 4, 5)
    如果此时你尝试修改元组中的元素的话,程序会报错。

    Traceback (most recent call last):
    File "C:/Users/Administrator/Desktop/1.py", line 4, in <module>
    tup[0]=20
    TypeError: 'tuple' object does not support item assignment
    2.解包元组

    读取一个元素的过程叫做解包

    3.搜索元素

    可以使用index方法来返回一个元素第一次出现的位置。也可以使用in()方法来搜索一个元素是否在元组中:

    tup = (1,2,3,4,5)

    print (10 in tup)
    print (2 in tup)

    --------------------
    False
    True
    以上就是一些在pygame游戏开发中常用的数据结构,很简单,接触过python的肯定有了解的。
    --------------------- 

  • 相关阅读:
    监测你的SQL SERVER让瓶颈暴露
    SQL Server日志文件总结及日志满的处理
    SQL保持多台服务器数据的一致性
    SAS的函数
    业务单号自动增长的处理办法
    有一点迷茫了
    怎么强制弹出窗口永远在最前面(转)
    XML技术上传文件
    SQL复制表结构的通用存储过程(转)
    ACCESS中使用SQL语句应注意的地方、与sql server的区别及几点技巧(整理中)
  • 原文地址:https://www.cnblogs.com/hyhy904/p/10983030.html
Copyright © 2020-2023  润新知