2024-05-15 03:45:48 发布
网友
我有一份清单:
game = [['X', 'O', 'O'], ['', '', 'O'], ['', '', '']]
我想更改所有值:
输出将是:
我可以这样迭代:
for list in game: for element in list: ...
但是要更改列表列表中的元素,那就另当别论了,我可以用append创建一个新列表,但是我得到的结果是[1, 2, 2, 0, 0, 2, 0, 0, 0]
[1, 2, 2, 0, 0, 2, 0, 0, 0]
已经有很多好答案了。我将使用map()添加一行代码,因为它很有趣:
map()
[list(map(lambda x: {'X':'1', 'O':'2', '':'0'}.get(x), i)) for i in game] # [['1', '2', '2'], ['0', '0', '2'], ['0', '0', '0']]
说明:map()实际上是在传递的对象i之上应用一个函数,这是游戏的子列表。在本例中,我们希望将评分字典中的.get(x)应用于game中的子列表(i)中的每个标记(x)。结合列表理解,它将所有转换后的分数作为list的一个新的lists
i
.get(x)
game
x
list
使用字典和列表理解:
>>> game = [['X', 'O', 'O'], ['', '', 'O'], ['', '', '']] >>> d = {'X': '1', 'O': '2', '': '0'} >>> [[d[x] for x in row] for row in game] [['1', '2', '2'], ['0', '0', '2'], ['0', '0', '0']]
现在您已经有了一个答案列表,该列表正在致力于用尽所有可能来转换基于简单映射的列表的值,所以不包括使用map()的解决方案似乎是失职的。这里是:
game = [['X', 'O', 'O'], ['', '', 'O'], ['', '', '']] nums = [list(map(lambda x: '2' if x == 'O' else '1' if x == 'X' else '0', row)) for row in game] print(nums) # OUTPUT # [['1', '2', '2'], ['0', '0', '2'], ['0', '0', '0']]
已经有很多好答案了。我将使用
map()
添加一行代码,因为它很有趣:说明:
map()
实际上是在传递的对象i
之上应用一个函数,这是游戏的子列表。在本例中,我们希望将评分字典中的.get(x)
应用于game
中的子列表(i
)中的每个标记(x
)。结合列表理解,它将所有转换后的分数作为list
的一个新的list
s使用字典和列表理解:
现在您已经有了一个答案列表,该列表正在致力于用尽所有可能来转换基于简单映射的列表的值,所以不包括使用
map()
的解决方案似乎是失职的。这里是:相关问题 更多 >
编程相关推荐