微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将二维数组的每个元素从 dic 转换为带有 ' '

如何解决将二维数组的每个元素从 dic 转换为带有 ' '

我正在尝试编写一个程序,该程序将板显示为带有“_”(隐藏方块)、“.”的列表(按原样)。 (炸弹)、“ ”(空方块)或“1”、“2”等

game = {'dimensions': [2,4],'board': [['.',3,1,0],['.','.',0]],'mask': [[False,True,False,False],[False,False]],'state': 'ongoing'}

预期回报

[['.','3','1',' '],' ']] 

我尝试就地更改它:

def transform(game):
    for outer in game['board']:
            for inner in outer:
                if inner ==0: 
                    inner =' '
                else: 
                    inner = "\'"+str(inner)+"\'"
                    print("inner",inner)
                    print(type(inner))
        return game['board'] 

我将每个内部打印为所需格式的字符串,但最终返回值根本没有改变?? :

 ...
 inner '3'
 <class 'str'>
 inner '1'
 <class 'str'>
 inner ...
  

[['.',0]]

解决方法

试试:

game = {'dimensions': [2,4],'board': [['.',3,1,0],['.','.',0]],'mask': [[False,True,False,False],[False,False]],'state': 'ongoing'}

def transform(game):
    for outer in game['board']:
            for i,inner in enumerate (outer):
                if inner ==0: 
                    outer[i] =' '
                else: 
                    outer[i] = "\'"+str(inner)+"\'"
                    print("inner",inner)
                    print(type(inner))
    return game['board'] 

transform(game)

输出:

[["'.'","'3'","'1'",' '],["'.'","'.'",' ']]
,

您需要更改outer[{the index of inner}],而不是更改inner。使用列表推导式的单行解决方案是创建一个新列表,而不是更改 旧列表。

单线解决方案:

game = {'dimensions': [2,'state': 'ongoing'}

def transform(game):
    return [[' ' if inner == 0 else "\'"+str(inner)+"\'" for inner in outer] for outer in game['board']]

print(transform(game))

结果:

[["'.'",' ']]

EDIT:如果您不想使用单行和 list comprehension 创建新列表,您可以试试这个代码。

代码:

def transform_create(game_board):
    result = []
    for board in game_board:
        temp = []
        for item in board:
            if item == 0:
                temp.append(' ')
            else:
                temp.append("\'"+str(item)+"\'")
        result.append(temp)
    return result
print(transform_create(game["board"]))

结果:

[["'.'",' ']]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?