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

标签 python

我正在尝试创建一个游戏。我有一个 list 。我想获取此列表中的项目并将它们随机附加到列表矩阵中的索引。考虑一个网格和一个在该网格中随机移动的项目。

import random


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


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

我想用随机鱼替换这些数字。从那里我希望鱼能够在网格中移动。解决这个问题的最佳方法是什么?谢谢您的帮助。

最佳答案

试试这个

>>> 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']]
>>> 

关于python - 将列表中的项目随机附加到矩阵列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8390548/

相关文章:

Python 类实例是重复的属性

python - Python 中的二维对象数组

python - 值错误 : None values not supported Keras Custom Loss Function in Tensorflow

Python ducktyping 感觉笨拙这是 Pythonic 吗?

python - 在 Python 中处理古怪的编码

python - Flask 和 SQLAlchemy 的 "unexpected EOF on client connection"

python - 为什么 wx.Yield() 在 Windows 下显然没有屈服

python - 使用 Django 迁移添加 Postgres 全文搜索字段

python - 如何规范化 Pandas 数据框中一系列列中的数据

python - 以类似枢轴的方式对分层数据进行排序