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的肯定有了解的。
---------------------
Python游戏开发:pygame游戏开发常用数据结构的更多相关文章
- Python学习-第二天-字符串和常用数据结构
Python学习-第二天-字符串和常用数据结构 字符串的基本操作 def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1 ...
- Python语法速查: 15. 常用数据结构
返回目录 本篇索引 (1)array (2)bisect (3)deque (4)defaultdict (5)namedtuple (6)heapq (7)itertools (1)array ar ...
- 【python游戏编程之旅】第八篇---pygame游戏开发常用数据结构
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 上一个博客我们一起学习了pygame中冲突检测技术:http://www.cnblogs.com/msxh/ ...
- Python和Pygame游戏开发 pdf
Python和Pygame游戏开发 目录 第1章 安装Python和Pygame 11.1 预备知识 11.2 下载和安装Python 11.3 Windows下的安装说明 11.4 Mac OS X ...
- 吴裕雄--天生自然python学习笔记:python 用pygame模块开发俄罗斯方块游戏
俄罗斯方块游戏 多年前,游戏机中最流行的游戏就是“俄罗斯方块”了.时至今日,虽然网络 游戏日新月异 ,但“俄罗斯方块”这款小游戏仍在许多人心中 占有一席之地.本例中, 我们将亲手设计一个简单的俄罗斯方 ...
- Pygame 游戏开发 All In One
Pygame 游戏开发 All In One Pygame Pygame is a library for digital arts, games, music, making, and a comm ...
- pygame游戏开发-简介
转自白月黑羽Python教程:http://www.python3.vip/doc/tutorial/python/game/ 推荐对Python有兴趣的童鞋可以关注去看看,教程语言平实,简单易懂. ...
- Pygame游戏开发入门(1)-开发框架
pygame库的安装 pip install pygame pygame最小开发框架 #Pygame Hello World Game import pygame,sys #引入pygame和sys( ...
- pygame游戏开发入门例子
# *_* coding:utf-8 *_* # 开发团队:中国软件开发团队# 开发人员:Administrator# 开发时间:2019/3/23 11:16# 文件名称:pygame_demo# ...
随机推荐
- android中单元測试中的断言assert的使用与扩展
首先看一组对照,比方说我们要測试的结果是一个Linearlaout AssertJ Android: assertThat(layout).isVisible() .isVertical() .has ...
- rsh 无秘钥登陆配置
/etc/hosts.equiv里的主机不须要提供password就能够訪问本机./etc/host.equiv 要和~/.rhosts文件连用. [root@web-htl2-01 ~]# cat ...
- 自己动手写shell命令之ls -R1fF
ls命令的R參数代表递归的列出全部子目录中的全部文件,1表示每一行仅仅显示一个文件或目录,f表示不排序即输出.F表示在每项的输出的最后依据其文件类型对应的加上*/=>@|字符.通过c语言实现ls ...
- [计算机联网故障]WIFI接入正常,但是上网不正常(两种情况)
今天同事拿来一个笔记本,说是连接WIFI都正常,但是就是无法上网.换了单位的wifi和他自己的手机共享wifi都是无法上网. 我首先检查了一下IP地址设置,看是否指定了IP.没有. 然后取消IPv6. ...
- VS2010打开2012项目(转载)
原文出处:http://www.cnblogs.com/johnsony/p/Version2012To2010.html vs2012 出来了,但是MS还是一如既往的向上兼容. 废话不多说,直接主题 ...
- 动态代理3--Spring AOP分析
Spring AOP的基本实现方式 Spring AOP,一种模块化机制,能够动态的对切点添加行为,而不破坏原有的代码结构. 这是一个非常好地动态代理的应用方式.Spring AOP实现依赖于JDK ...
- P1198 [JSOI2008]最大数(线段树)
P1198 [JSOI2008]最大数(线段树) 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值 ...
- Create schema error (unknown database schema '')
Andrey Devyatka 4 years ago Permalink Raw Message Hi,Please tell me, can I use the static library in ...
- jQuery的each内部的break,continue
// break, continue在each等迭代器里都不可用 // return false = break // return true = continue function isClicke ...
- 疫情控制 2012年NOIP全国联赛提高组(二分答案+贪心)
P1084 疫情控制 题目描述 H 国有 n 个城市,这 n 个城市用 n-1 条双向道路相互连通构成一棵树,1 号城市是首都,也是树中的根节点. H 国的首都爆发了一种危害性极高的传染病.当局为了控 ...