将列表中的项随机附加到矩阵中

2024-05-21 08:40:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创造一个游戏。我有一张单子。我想把这个列表中的项目随机添加到列表矩阵的索引中。想象一个网格和一个项目在这个网格中随机移动。你知道吗

import random


fishlist = ["salmon", "carp", "bass", "catfish"]


grid = [
            [1,2,3],
            [4,5,6],
            [7,8,9],
            ]

我想用一条随机的鱼来替换这些数字。从那里我希望鱼能够在网格上移动。最好的办法是什么?谢谢你的帮助。你知道吗


Tags: 项目import网格游戏列表矩阵randomgrid
2条回答

您可以创建一个包含从索引到fish的映射的列表

import random  
random.seed()  # init the random seed
fish = [0] * 11   # init the array  
for i in range(1,11):     #for each indexes from 1 to 10
    fish[i] = random.choice(fishlist)

然后,对于每个网格

grid_fish=[[0,0,0],[0,0,0,],[0,0,0]]#初始化fish网格

for i in range(0,len(grid):
   for j in range(0,len(grid[i])):
       grid_fish[i][j] = fish[ grid[i][j] ]     

对于网格中的每个项,根据数组fish中的索引获取fish的名称,并将结果放入grid_fish

试试这个

>>> grid = [
            [1,2,3],
            [4,5,6],
            [7,8,9],
            ]
>>> fishlist = ["salmon", "carp", "bass", "catfish"]

>>> [r.__setitem__(i,random.choice(fishlist)) for r in grid for i in xrange(0,len(r))]
[None, None, None, None, None, None, None, None, None]
>>> print grid
[['salmon', 'salmon', 'carp'], ['carp', 'salmon', 'bass'], ['bass', 'salmon', 'bass']]
>>> 

要移动鱼,试试这个

>>> def Move(grid):
    rSrc=random.choice(grid)
    rDest=random.choice(grid)
    a,b=random.randint(0,len(rSrc)-1),random.randint(0,len(rSrc)-1)
    rSrc[a],rDest[b]=rDest[b],rSrc[a]
    >>> grid
[['carp', 'catfish', 'catfish'], ['catfish', 'carp', 'salmon'], ['catfish', 'catfish', 'carp']]
>>> Move(grid)
>>> grid
[['catfish', 'catfish', 'carp'], ['catfish', 'carp', 'salmon'], ['catfish', 'catfish', 'carp']]
>>> 

使用循环

>>> grid = [
            [1,2,3],
            [4,5,6],
            [7,8,9],
            ]
>>> fishlist = ["salmon", "carp", "bass", "catfish"]
>>> for r in grid:
    for i in xrange(0,len(r)):
        r[i]=random.choice(fishlist)


>>> grid
[['bass', 'catfish', 'carp'], ['catfish', 'salmon', 'salmon'], ['bass', 'salmon', 'catfish']]
>>> 

相关问题 更多 >