繁体   English   中英

使用 python 创建矩阵或列表列表

[英]creating a matrix or a list of lists with python

我完成了一个关于列表和使用井字游戏的教程。

我得到一个字符串,如:XOXOXOXXO

我想将其转换为矩阵或列表列表,例如:

tic_tac_toe= [[ 'X', 'O', 'X'], [ 'O', 'X', 'O'], [ 'O', 'X', 'X']]

我可以将其作为“列表”获取,但无法将其作为列表列表获取。

我一直在搜索各种帖子,一个挑战是我看到很多都是 5 或 7 岁的,我不得不想知道一些答案仍然是多么相关,而且我之前无法完成这些工作建议。

player_actions = 'XO_OOX_X_'

cells = list()

print('Before loop:', player_actions)

for char in player_actions:
    cells.insert(0, ''.join(char.split()))

# Output
print('After loop:', cells)

Output example:
Before loop: XOXOXOXXO
After loop: ['O', 'X', 'X', 'O', 'X', 'O', 'O', 'X', 'X']

Goal: [['O', 'X', 'X'],['O', 'X', 'O'],['O', 'X', 'X']]

使用slicing创建一批均匀分布的元素:

s = 'XOXOXOXXO'
splitted = [s[x:x+3] for x in range(0,len(s),3)]
print([[i] for i in splitted])

单线:

print([[i] for i in [s[x:x+3] for x in range(0,len(s),3)]]) # [['XOX'], ['OXO'], ['XXO']] 
print([[i for i in s[x:x+3]] for x in range(0,len(s),3)])   # [['X', 'O', 'X'], ['O', 'X', 'O'], ['X', 'X', 'O']]

使用 numpy 数组并在此之后对其进行整形

代码

import numpy as np

arr = ['O','X','O','X','X','O','X','X','O'] #let's take this list as an example

arr = np.array(arr).reshape(3,3) #this creates a 3x3 matrix of the given list

arr = arr.tolist() #if you want to convert numpy array back to list

print(arr)

#output
# [['O', 'X', 'O'], ['X', 'X', 'O'], ['X', 'X', 'O']]

假设您实际想要的 output 为

player_actions = 'XOXOXOXXO'

[['X', 'O', 'X'], ['O', 'X', 'O'], ['X', 'X', 'O']]

您可以使用嵌套列表推导生成它:

cells = [[c for c in player_actions[i:i+3]] for i in range(0, len(player_actions), 3)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM