一、数组与列表

数组可以理解为简化的列表。像我们之前使用的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游戏开发常用数据结构的更多相关文章

  1. Python学习-第二天-字符串和常用数据结构

    Python学习-第二天-字符串和常用数据结构 字符串的基本操作 def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1 ...

  2. Python语法速查: 15. 常用数据结构

    返回目录 本篇索引 (1)array (2)bisect (3)deque (4)defaultdict (5)namedtuple (6)heapq (7)itertools (1)array ar ...

  3. 【python游戏编程之旅】第八篇---pygame游戏开发常用数据结构

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 上一个博客我们一起学习了pygame中冲突检测技术:http://www.cnblogs.com/msxh/ ...

  4. Python和Pygame游戏开发 pdf

    Python和Pygame游戏开发 目录 第1章 安装Python和Pygame 11.1 预备知识 11.2 下载和安装Python 11.3 Windows下的安装说明 11.4 Mac OS X ...

  5. 吴裕雄--天生自然python学习笔记:python 用pygame模块开发俄罗斯方块游戏

    俄罗斯方块游戏 多年前,游戏机中最流行的游戏就是“俄罗斯方块”了.时至今日,虽然网络 游戏日新月异 ,但“俄罗斯方块”这款小游戏仍在许多人心中 占有一席之地.本例中, 我们将亲手设计一个简单的俄罗斯方 ...

  6. Pygame 游戏开发 All In One

    Pygame 游戏开发 All In One Pygame Pygame is a library for digital arts, games, music, making, and a comm ...

  7. pygame游戏开发-简介

    转自白月黑羽Python教程:http://www.python3.vip/doc/tutorial/python/game/ 推荐对Python有兴趣的童鞋可以关注去看看,教程语言平实,简单易懂. ...

  8. Pygame游戏开发入门(1)-开发框架

    pygame库的安装 pip install pygame pygame最小开发框架 #Pygame Hello World Game import pygame,sys #引入pygame和sys( ...

  9. pygame游戏开发入门例子

    # *_* coding:utf-8 *_* # 开发团队:中国软件开发团队# 开发人员:Administrator# 开发时间:2019/3/23 11:16# 文件名称:pygame_demo# ...

随机推荐

  1. create-react-app 引入 antd 及 解决 antd 样式无法显示的bug

    方案一: npm run eject 暴露所有内建的配置 安装组件库 yarn add antd babel-plugin-import 根目录下新建.roadhogrc文件(别忘了前面的点,这是ro ...

  2. HDU 5407 CRB and Candies(LCM +最大素因子求逆元)

    [题目链接]pid=5407">click here~~ [题目大意]求LCM(Cn0,Cn1,Cn2....Cnn)%MOD 的值 [思路]来图更直观: 这个究竟是怎样推出的.说实话 ...

  3. 【Record】ART:Android RunTime

    资料来自url=9xdxrhR45Uj3p450JQvTUO-dmzcWswNmABVgYAaFS0AXYDi8Q2JOzvu7y33GIOAI_8Lz7JmLrl0x6DoRW8e5oa" ...

  4. Python正則表達式小结(1)

    学习一段python正則表達式了, 对match.search.findall.finditer等函数作一小结  以下以一段网页为例,用python正則表達式作一个范例: strHtml = '''& ...

  5. MongoDB 学习笔记一 安装以及基础命令

    一.MongoDB安装配置 1.获取最新版本号: wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.2.tgz 2.解压缩就可 ...

  6. Python数据导入

    1.csv格式数据导入 import pandas as pd w=pd.read.csv("数据地址") w.describe() w.sort_values(by=" ...

  7. 关于Time Series Database

    今天观察了下clojure之父datomic.com的数据库 有点类似sequence数据库的变种 不过这类数据库,感觉用在移动端会更有市场: 1. 移动端需要这种可以本地存储,无删除,联网只增加,只 ...

  8. ReSharper warns: “Static field in generic type”

    http://stackoverflow.com/questions/9647641/resharper-warns-static-field-in-generic-type It's fine to ...

  9. 4.7.3 Canonical LR(1) Parsing Tables

    4.7.3 Canonical LR(1) Parsing Tables We now give the rules for constructing the LR(1) ACTION and GOT ...

  10. SYSUCPC2017 online round La La string 应用manacher算法

    manacher算法给出一个字符串中 以每个位置为对称中心的回文串长度,但是大部分时候我们只需要知道以每个位置为起点的回文串长度,感觉有点浪费. 那么来看看这个不难也不太简单的题目 第一步,我们要想办 ...