需要帮助查找和索引列表Python中的一系列条目

时间:2015-03-23 21:17:37

标签: python list

我希望在特定列表中找到一系列条目,然后找到它的位置,以便我可以在特定点之后在序列上添加一些额外条目。我需要找到这个,因为我正在使用基于网格的电路板进行基于回合制的游戏,我需要在任何必要的时间存储数据。

我的代码目前是:

CreateWorld.py:

global BaseHealth
BaseHealth = 10

global BaseHappiness
BaseHappiness = 10

global BaseIntelligence
BaseIntelligence = 10

global BaseProduction
BaseProduction = 10

global BaseWealth
BaseWealth = 10

global Tiles
Tiles = []


#The Process of Generating a Blank Map xAxis long and zAxis wide
def createLandscape(xAxis, zAxis):
    #Sets the amount of createdRows to 0
    createdRows = 0

    #Calls createRow() the amount of times that the Map is Long
    while createdRows < xAxis:
        createRow(createdRows, zAxis)
        createdRows += 1

#The Process of Generating a Blank Map Row zAxis Wide and with a Row Number of RowsCreated
def createRow(RowsCreated, zAxis):
    #Sets the amount of createdTiles to 0
    createdTiles = 0
    createdRows = RowsCreated

    #Calls createTile() the amount of times that the Row is wide
    while createdTiles < zAxis:
        createTile(createdRows, createdTiles)
        createdTiles += 1

#The Process of Generating a Blank Map Tile in the 
def createTile(RowsCreated, TilesCreated):
    global Tiles
    Tiles.append(RowsCreated)
    Tiles.append(TilesCreated)
    Tiles.append("end")

主档案:

import sys

sys.path.insert(1,'/BaseGame')

from Startup import Start
from Startup import MainMenu
from BaseGame import CreateWorld

global Tiles


#Start.start()
#MainMenu.listMenu_Main00()
CreateWorld.createLandscape(3, 3)


Tiles.insert()
print Tiles

我希望能够列出多个

条目

[x位置,z位置,无论什么,无论结束,x位置,z位置,无论结束,x位置,z位置,无论什么,无论什么,不管结束等等)

然后在x位置之后添加任意内容,例如32位且z为50.所以它最终会

(... 32,50,无论如何,结束)

1 个答案:

答案 0 :(得分:0)

使用dict进行此类操作可能会有所帮助。例如,您可以使用全局Tiles及其索引来访问特定磁贴。

Tiles = [{'x_loc':32, 'z_loc':50, 'stuff1':"stuff1", 'stuff2':"stuff2"},
         {'x_loc':33, 'z_loc':51, 'stuff3':"stuff3", 'stuff4':"stuff4"},
         {'x_loc':34, 'z_loc':52, 'stuff5':"stuff5", 'stuff6':"stuff6"}
        ]

例如:

>>> for id, item in enumerate(Tiles):print(Tiles[id]['x_loc'])
... 
32
33
34
>>> for id, item in enumerate(Tiles):print(Tiles[id]['x_loc'], item)
... 
(32, {'z_loc': 50, 'x_loc': 32, 'stuff1': 'stuff1', 'stuff2': 'stuff2'})
(33, {'z_loc': 51, 'stuff4': 'stuff4', 'x_loc': 33, 'stuff3': 'stuff3'})
(34, {'z_loc': 52, 'stuff5': 'stuff5', 'x_loc': 34, 'stuff6': 'stuff6'})

然后您可以更新项目,添加项目或从其他图块复制:

>>> Tiles[1]
{'z_loc': 51, 'stuff4': 'stuff4', 'x_loc': 33, 'stuff3': 'stuff3'}
>>> Tiles[1].update({'stuff4':'stuff4updated'})
>>> Tiles[1]
{'z_loc': 51, 'stuff4': 'stuff4updated', 'x_loc': 33, 'stuff3': 'stuff3'}
>>> Tiles[1].update({'stuff4':'stuff4updatedtwice', 'stuff3':'stuff3updated'})
>>> Tiles[1]
{'z_loc': 51, 'stuff4': 'stuff4updatedtwice', 'stuff3': 'stuff3updated', 'x_loc': 33}
>>> Tiles[1]
{'z_loc': 51, 'stuff4': 'stuff4updatedtwice', 'stuff3': 'stuff3updated', 'x_loc': 33}
>>> Tiles[1].update({'stuff2':Tiles[0]['stuff2']})
>>> Tiles[0]
{'z_loc': 50, 'x_loc': 32, 'stuff1': 'stuff1', 'stuff2': 'stuff2'}
>>> Tiles[1]
{'z_loc': 51, 'stuff4': 'stuff4updatedtwice', 'stuff2': 'stuff2', 'stuff3': 'stuff3updated', 'x_loc': 33}

查找条目序列取决于网格尺寸。

在我的例子中,我使用的是1x3。

因此,为了找到一个系列,我将创建一个3x3,然后使用索引范围。

>>> Tiles2 = [Tiles,Tiles,Tiles]
>>> Tiles2[0][0:2]
[{'z_loc': 50, 'x_loc': 32, 'stuff1': 'stuff1', 'stuff2': 'stuff2'}, {'z_loc': 51, 'stuff4': 'stuff4updatedtwice', 'stuff2': 'stuff2', 'stuff3': 'stuff3updated', 'x_loc': 33}]
>>> Tiles2[0:1][0:2]
[[{'z_loc': 50, 'x_loc': 32, 'stuff1': 'stuff1', 'stuff2': 'stuff2'}, {'z_loc': 51, 'stuff4': 'stuff4updatedtwice', 'stuff2': 'stuff2', 'stuff3': 'stuff3updated', 'x_loc': 33}, {'z_loc': 52, 'stuff5': 'stuff5', 'x_loc': 34, 'stuff6': 'stuff6'}]]

`